RecyclerView с каждым элементом как Exoplayer выбрасывает исключение из памяти даже после освобождения проигрывателя в методе onViewRecycled () адаптера. Что я могу сделать, чтобы решить эту проблему?
Я прошел другие посты об этой проблеме, из-за этого я попробовал эту ссылку , но это также не работает.
И я уже увеличил размер кучи в манифесте .
фрагмент кода из адаптера:
override fun onBindViewHolder(holder: MemoryHomeHolder, position:Int)
{
val memory = memoryList[position]
holder.bind(memory)
holder.itemMemoryListBinding.playerView?.useController = true
holder.itemMemoryListBinding.playerView?.showController()
val path: memory.path
val player = ExoPlayerFactory.newSimpleInstance(
context,
DefaultTrackSelector(),
DefaultLoadControl()
)
val dataSourceFactory = DefaultDataSourceFactory(
context,
Util.getUserAgent(context, AppConstants.OFH)
)
val source = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(Uri.parse(path))
holder.itemMemoryListBinding.playerView?.player = player
holder.itemMemoryListBinding.playerView?.controllerHideOnTouch = false
holder.itemMemoryListBinding.playerView?.controllerShowTimeoutMs = -1
holder.itemMemoryListBinding.playerView?.resizeMode =
AspectRatioFrameLayout.RESIZE_MODE_FILL
holder.itemMemoryListBinding.playerView?.exo_progress?.visibility
= View.GONE
(holder.itemMemoryListBinding.playerView?.player as
SimpleExoPlayer?)?.prepare(source)
(holder.itemMemoryListBinding.playerView?.player as
SimpleExoPlayer?)?.repeatMode = Player.REPEAT_MODE_ALL
activePlayerHolders.add(holder)
Log.d(TAG, "holder init for position = $position")
}
override fun onViewRecycled(holder: MemoryHomeHolder) {
super.onViewRecycled(holder)
holder.itemMemoryListBinding.playerView?.player?.release()
}
Я хочу, чтобы в RecyclerView был элемент Exoplayer в качестве элемента в каждомдержатель и он не должен выбрасывать из памяти исключение