목록Android (3)
코린이 탈출기
💡개요 성능개선을 위해 기존에 사용하던 RecyclerView를 DiffUtil + ListAdapter로 변경하는 작업을 진행하였는데, 변경하면서 어려웠던 점과 해결방안에 대해 기록해두려고 한다. RecyclerView를 사용하면서 어댑터에 변경사항을 알리기 위해 사용하는 notifyDataSetChanged() 함수를 매우 빠르게 자주 호출하게 되면 화면 내의 모든 항목이 한 프레임 내에서 다시 결합/배치되고 다시 그려지게 되는데, 이 때 리소스를 많이 사용하여 앱 성능이 현저히 떨어지게 되고, 결국에는 OOM으로 앱이 종료되는 현상이 발생했다. 이러한 현상은 사용자 경험에 큰 영향을 주기 때문에 꼭 수정이 필요한 부분이었다. notifyDataSetChanged()는 모든 항목이 새로 그려지게 되는..
이전 게시글에서는 RxJava를 사용하여 Giphy API로 랜덤으로 받아온 gif를 recyclerView에 띄워주는 방법에 대해 다루어 보았다. Giphy API 사용법: https://developers.giphy.com/docs/api/endpoint/#trending 이번에는 사용자가 검색한 키워드에 대한 검색 결과를 나타내볼텐데, throttling과 debouncing 두가지 방법으로 구현해보고 차이점에 대해서도 다루어보려고 한다. 예를 들어, 사용자가 "hello" 라는 키워드의 gif들을 검색하는 경우를 생각해보자. 검색창의 text가 변경될 때마다 서버로부터 search 결과를 요청한다면, "h", "he", "hel", "hell", "hello" 각 text에 대한 결과를 모두 요청..
이번 RxJava 스터디에서 토이 프로젝트로 Giphy API를 이용해서 gif 추천/검색 등 다양한 기능을 하는 앱을 만들어보려고 한다. RxJava를 익히기 위해서 만들어보는 거라서 아주 잡다한 기능이 많이 추가될 예정 .. Giphy API는 RESTful API로, 여러가지 gif들을 api 형식으로 제공해주고 있다. https://developers.giphy.com/docs/api/endpoint/#trending 해당 문서를 참고하면 된당 먼저 사용해볼 api는 random api! 말그대로 랜덤으로 gif를 반환해준다. 이 api로 우선은 랜덤으로 10개의 gif를 받아와서 recyclerView를 통해 띄워보도록 하쟈 프로젝트 구성 data: gif data 클래스 패키지 di: dagg..