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 ViewHolder class you should check, if player == null, you must initialize it.