Recent Posts
Recent Comments
에르노트
리사이클러뷰 깜빡임 현상 제거 [setItemViewCacheSize()] 본문
일반적인 속도로 화면을 끌어내릴 때는 거의 그 속도에 맞춰서 onBindViewHolder()가 호출되고, 사용자는 위화감을 느끼지 않는다. 그런데 위 예시처럼 급격하게 스크롤을 꺽어올려버리면 아이템이 다시 바인딩되는 과정에서 다소 딜레이가 발생할 수 있다. 위 경우는 미리 구성된 데이터를 바인딩하는 것이 아니라 api 콜을 통해 비동기적으로 선수 이름을 불러와서 바인딩하는 경우였으므로 그 딜레이를 사용자가 눈으로 느낄 수 있기에 문제가 되었다.
여러가지 시도를 해보았는데 결국 해결법은 매우 간단했다. 아이템의 개수가 정해진 경우라면 그 개수만큼, 혹은 스크롤이 지나갈 충분한 양만큼을 캐시해두면 된다. 그리고 안드로이드 리사이클러뷰에서는 자체적으로 그 메소드를 제공하고 있다.
RecyclerView.setItemViewCacheSize(int n)
이렇게 설정해두면 리사이클러뷰는 n만큼의 항목을 계속해서 유지한다. 아이템이 화면 밖으로 사라졌더라도 onBindViewHolder()의 재실행 없이 그 뷰로 돌아갈 수 있다는 것이다. 따라서 위와 같은 깜빡임(블링킹) 현상을 해결할 수 있다.
'Dev > Android' 카테고리의 다른 글
페이스북 오디언스 네트워크 캐싱 오류 해결(Android 9) (0) | 2020.07.10 |
---|---|
[안드로이드] 다른 앱에서 공유 목록에 내 앱 띄우기 (0) | 2020.02.12 |
안드로이드 카메라 프리뷰 예제(Camera2 API, 코틀린) (6) | 2020.02.07 |
Room 라이브러리 어노테이션 에러 해결 (0) | 2020.01.28 |
Comments