프로그래밍/Android

[안드로이드] ExoPlayer 깜빡거리거나 검은 화면(Black screen)이 뜰 때

Lou Park 2023. 1. 31. 22:48

문제발생

Epoxy로 무한 반복되는 배너 캐러셀에 동영상을 적용시키는 중에, 간혹 동영상이 재생될때 검은 화면만뜨고 재생이 안되거나 깜빡이는 문제가 있었다.

 

*하나의 ExoPlayer를 RecyclerView.Adapter에서 재활용해가면서 쓰는 사례다.

카트라이더 부분이 동영상

정신차리고 setPlayer() Document를 자세히 읽어보니... Player를 다른 View에 붙일때 switchTargetView()를 쓰는걸 추천한다고 되어있다. 하지만 setPlayer()를 직접 쓰고자 할 경우 이전 View에서 Player를 분리하기 위해 setPlayer(null)을 호출하기 이전에 새로운 View에 Player를 연결시켜야 한다.

 

*switchTargetView를 직접 써보려고 했으나, 지원하지 않는 메소드였다.

 

해결방법

순서의 문제다.

정리를해보자면 A, B 총 2개의 PlayerView가 있을때

A에는 setPlayer(player)가 되어있는 상태이고, 동일한 Player를 B에다가 붙이려 한다.

이때 A에서 Player를 떼버리기 전에 B에 Player를 세팅하고 A에서 떼면된다.