목록Android 공부 (5)
코린이 탈출기
💡개요 성능개선을 위해 기존에 사용하던 RecyclerView를 DiffUtil + ListAdapter로 변경하는 작업을 진행하였는데, 변경하면서 어려웠던 점과 해결방안에 대해 기록해두려고 한다. RecyclerView를 사용하면서 어댑터에 변경사항을 알리기 위해 사용하는 notifyDataSetChanged() 함수를 매우 빠르게 자주 호출하게 되면 화면 내의 모든 항목이 한 프레임 내에서 다시 결합/배치되고 다시 그려지게 되는데, 이 때 리소스를 많이 사용하여 앱 성능이 현저히 떨어지게 되고, 결국에는 OOM으로 앱이 종료되는 현상이 발생했다. 이러한 현상은 사용자 경험에 큰 영향을 주기 때문에 꼭 수정이 필요한 부분이었다. notifyDataSetChanged()는 모든 항목이 새로 그려지게 되는..
한번에 20개의 gif를 가져오고 있는 현재 애플리케이션을 무한스크롤로 변경해보는 작업을 해보자 !! 이전 게시글 [RxJava] Giphy API를 활용한 gif 추천 애플리케이션 (2) 이전 게시글에서는 RxJava를 사용하여 Giphy API로 랜덤으로 받아온 gif를 recyclerView에 띄워주는 방법에 대해 다루어 보았다. Giphy API 사용법: https://developers.giphy.com/docs/api/endpoint/#trending 이.. ekdbsl22.tistory.com 무한 스크롤이란? 1. recyclerView로 보여줄 목록을 구현하고 (이전 게시글에서 작업한 부분) 2. 스크롤이 끝에 닿았을 경우 새로운 데이터를 불러온다. 3. 새로운 데이터를 adapter 통..
이전 게시글에서는 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..
RxJava란? 자바로 리액티브 프로그래밍을 할 수 있는 라이브러리이며 비동기 프로그래밍과 함수형 프로그래밍 기법을 함께 활용한다. 리액티브 프로그래밍은 복잡한 비동기 프로그램을 쉽게 만들 수 있게 해준다. 또한 비동기에서 처리하기 힘든 에러 처리나 데이터 가공을 쉽게 할 수 있도록 돕는다. 이벤트를 콜백이 아니라 데이터의 모음으로 모델링하기 때문이다. 어떤 기능이 직접 실행되는 것이 아니라 시스템에 어떤 이벤트가 발생했을 때 처리한다. RxJava 변수 1. Observable observer 패턴을 구현. 옵서버 패턴은 객체의 상태 변화를 관찰하는 옵서버 목록을 객체에 등록. 직관적으로, 관찰자(Observer)가 관찰하는 대상 !! onNext: Observable이 데이터의 발행을 알린다. onC..