마스터Q&A
접속유지
가입하기
안드로이드 Q&A
최근 질문
미답변 질문
태그
사용자
질문하기
마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다.
안드로이드펍
에서 운영하고 있습니다. [
사용법
,
운영진
]
인기있는 태그
초보어플개발
(3427)
안드로이드스튜디오
(2664)
안드로이드-초보어플개발
(1333)
안드로이드-스튜디오
(1086)
도와주세요-
(995)
이미지
(970)
listview
(866)
리스트뷰
(844)
오류
(805)
레이아웃
(693)
fragment
(675)
webview
(670)
리사이클러뷰 뷰홀더 재활용
0
추천
리사이클러뷰 하나에 여러개의 뷰타입을 둬서, 하고 있는데,
setRecycleable(false)를 쓰지 않았는데도 유튜브가 딱 안보일정도만큼만 스크롤 내렸다가 올리면 다시 로드를 안하는데
(뷰홀더를 재활용 하는것같습니다)
조금만 더 내리면 뷰홀더를 재활용을 안하는건지, 유튜브가 재로딩을 하더라구요 이유가 뭘까요?
리사이클러뷰
뷰홀더
스크롤
수원통학러
(
3,590
포인트)
님이
2022년 1월 14일
질문
그렇지는 않을 거예요. 리사이클러가 뷰홀더를 재활용할 때 화면에 보이는 아이템보다 많은 아이템을 재활용합니다. onCreateViewHolder에 로그를 찍어보시면 화면에 보이는 아이템 갯수보다 약간 더 많을 거예요. 제가 보기에 해당 이슈는 뷰홀더를 사용할 때 상태관리가 정확하게 되지 않는 데 있는 것 같아 보이네요.
제가 알기로는 oncreateviewholder가 1번호출되고 그 이후는 bindviewholder가 호출되는거로 알고있었는데, oncreateviewholder가 그 재로딩하는 시점에 또 호출이되고있더라구요 원래 oncreateviewholder가 여러번 호출되는게 맞나요..?
화면에 보여지는 아이템의 갯수에 따라 약간씩 달라져요. 기본적으로 리사이클러뷰는 화면에 보이는 아이템 갯수 + 여분(보통 앞, 뒤 2-3 개 정도)의 아이템 갯수만큼 뷰홀더를 캐싱해요. 즉 onCreateViewHolder는 화면에 아이템이 10개 보여진다고 하면 10번 + 여분 만큼 호출이 되요. Scroll을 up/down함에 따라 뷰홀더의 재사용이 효율적으로 동작하도록 설계되어 있어요. 그리고 내부적으로는 3가지 정도의 다른 캐시를 세팅에 따라 가져다 쓰기 때문에 설정을 커스텀으로 바꿀 때 제대로 이해를 못하고 이것 저것 건드리게 되면 이상한 버그가 나올 수 있는 가능성이 있어요.
Please
log in
or
register
to add a comment.
답변 달기
·
글에 소스 코드 보기 좋게 넣는 법
·
질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
답변이 채택되거나 답변에 댓글이 달리면 이메일로 알려드립니다:
답변이 채택되거나 댓글이 달리면 이메일로 알려드립니다
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면
로그인
하거나 혹은
가입
하세요.
...