I am implementing the ExoPlayer in a RecyclerView. But while scrolling the Video stops, but not the audio.
How can I release the ExoPlayer in the RecyclerView? Or how c
I think that it would be cleanest to release the player when its view is recycled.
Adapter Class:
@Override
public void onViewRecycled(@NonNull ViewHolder holder) {
int position = holder.getAdapterPosition();
if (mDataset.get(position) != null) {
mDataset.get(position).getPlayer().release();
}
super.onViewRecycled(holder);
}
holder.yourplayername.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
}
@Override
public void onViewDetachedFromWindow(View v) {
holder.yourplayername.getPlayer().stop();
}
});
hi.i hope this code helpful for you becuse work for me.
The system cannot hold multiple ExoPlayer
instances. It can throw an OOM Exception
. Therefore, you must release ExoPlayer
when the user does not see the item. In this case, I suggest you use the bellow method from RecyclerView.Adapter
override fun onViewDetachedFromWindow(holder: ViewHolder) {
holder.itemView.player?.stop()
holder.itemView.player?.release()
holder.itemView.player = null
super.onViewDetachedFromWindow(holder)
}
And then, in ViewHolde
r class you should check, if player == null
, you must initialize it.