[英]Exoplayer in recycler view keeps playing when app goes in background
[英]Android Kotlin - ExoPlayer keeps playing when app goes to background
到目前为止,我只发现了有关如何让 ExoPlayer 在应用程序进入后台时继续播放的问题。 为什么我在没有编码这个bs的情况下会出现这种情况?
这是我到目前为止所拥有的,它在 RecyclerView OnBingViewHolder 中:
val player = ExoPlayer.Builder(context).build()
val mediaItem: MediaItem = MediaItem.fromUri(fileUrl)
player.setMediaItem(mediaItem)
player.repeatMode = Player.REPEAT_MODE_ONE
holder.vidPlayer.player = player
player.prepare()
player.seekTo(100)
// player.play()
holder.vidPlayer.setTag(mpTag, player)
holder.vidPlayer.setTag(manuelPlayTag, false)
holder.vidPlayer.setTag(manuelPauseTag, false)
player.addListener(object : Player.Listener { // player listener
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
if (playWhenReady && playbackState == Player.STATE_READY) {
Log.d(tagg, "state: plays")
holder.vidPlayer.hideController()
} else if (playWhenReady) {
// might be idle (plays after prepare()),
// buffering (plays when data available)
// or ended (plays when seek away from end)
} else {
Log.d(tagg, "state: pause")
holder.vidPlayer.showController()
}
}
})
当应用程序进入后台时如何防止播放?
当您的应用程序进入后台时,将调用活动 Fragment/Activity 的生命周期方法onPause
(和onStop
)。 在onPause
方法中,您可以循环浏览绑定的 ViewHolders并停止视频播放器。
当应用程序进入后台时,您可以简单地stop
ExoPlayer。
override fun onStop() {
super.onStop()
simpleExoPlayer.stop()
}
在onStart
中再次prepare()
ExoPlayer:
override fun onStart() {
super.onStart()
simpleExoPlayer.prepare()
}
为了自动播放媒体,您需要设置
playWhenReady = true
。
simpleExoPlayer.playWhenReady = true
通过设置playWhenReady = true
它将自动播放内容,我们不需要显式调用simpleExoPlayer.play()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.