마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리사이클러뷰 유튜브 캐시저장?

0 추천
리사이클러뷰에 멀티뷰홀더를 이용했고 서버에서 내려오는 response model이 youtube 모델이면 그 뷰홀더에서

유튜브 나오도록 처리는 해놨습니다만

setrecyclebale(false)로 뷰홀더 재사용안하게 하면 유튜브가 서로 다른 여러개일경우, 유튜브가 정상적으로 나오나

스크롤시 좀 버벅입니다. (재활용을 안하다보니 스크롤해서 해당 유튜브 위치로 이동시키면 그때마다 썸네일 로딩?같은 걸 해서 오래걸리는거같아요)

안쓰자니 서로 다른 유튜브임에도 같은 뷰홀더를 사용해서인지 똑같은 유튜브로 재생됩니다

글라이드의 캐시저장하는 옵션처럼 유튜브도 이렇게 저장하는 옵션이 없나요? 도큐 보면 안보여서 다르게 처리할방법이 없을까요?

pierfrancescosoffritti 유튜브 api 사용하고 있습니다
수원통학러 (3,570 포인트) 님이 2022년 1월 12일 질문
recyclable = true하시는게 좋을 것 같고, 뷰홀더간에 같은 비디오가 재생되는 문제는 뷰홀더의 데이터나 비디오 플레이어를 제대로 초기화하지 않아서 생기는 문제로 추측됩니다. 그리고 캐시의 지원은 퍼포먼스 향상을 위한 것이지 뷰홀더 이슈의 해결은 좀 다른 문제로 보여집니다.
유튜브플레이어를 커스텀뷰로해서 거기서 addlistener하고 url 들어오는거보면 정상적으로 서로다른 url이 들어오고 있는데 문제가 뭘까요.. 뷰홀더에서 url 넘겨줄때마다 addlistener하고 있습니다
addListener 의 소스코드가 보이면 확인해 보세요.  add* 메소드는 대게는 여러개의 리스너를 추가할 수 있을 경우에 사용하고 remove*/delete* 의 메소드를 제공하는 것이 일반적입니다.
뷰홀더에서 리스너를 add하시기 전에 기존에 달린 리스너를 제거하고 add해야 하는지 확인해 보세요.
Github Readme에 보니 아래와 같이 리스너에 대해 나와 있네요.
youTubePlayer.addListener(YouTubePlayerListener listener);
youTubePlayer.removeListener(YouTubePlayerListener listener);

필요하다면 리스너 추가/제거에 대한 처리를 하셔야 할 것 같네요.
removelistener은 이미 시도해해봤는데 똑같더라구요.. ㅠㅠ

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...