我想在Jetpack中的AndroidView
中使用ExoPlayer
,在VerticalPager
中编写,并使用AndroidView上新的onReset功能来重用exoplayer视图。
文档说它被各种LazyList支持,但没有说VerticalPager/HorizontalPager。
由于这是一个非常新的特性,文档似乎很少。
AndroidView(
factory = {
Logger.d { "PlayerView factory created" }
PlayerView(context).apply {
hideController()
useController = false
player = exoPlayer
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_ZOOM
layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
clipToOutline = true
}
},
onReset = {
Logger.d { "" }
(it.player as ExoPlayer).apply {
val defaultDataSourceFactor = DefaultDataSource.Factory(context)
val dataSourceFactory: DataSource.Factory = DefaultDataSource.Factory(
context,
defaultDataSourceFactor
)
val source = ProgressiveMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(video.url))
setMediaSource(source)
repeatMode = REPEAT_MODE_ONE
prepare()
}
},
onRelease = {
Logger.d { "PlayerView factory released" }
}
)
但这只是给我出了内存错误。
我该怎么做才能让它工作?
1条答案
按热度按时间8dtrkrch1#
重用也可以在寻呼机中工作
我不知道你试图在onReset块中做什么,在onReset中,你应该重置以前播放的活动视频,因为以前的内容不再与此视图相关联。您需要在更新块内启动视频播放-另一个参数AndroidView有