可以通过添加Activity的lifecycle方法及ExoPlayer的EventListener来解决这个问题。在onPause方法中暂停播放并取消EventListener注册,在onResume方法中恢复播放并重新注册EventListener。
以下是示例代码:
class MainActivity : AppCompatActivity() {
private lateinit var player: SimpleExoPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
player = SimpleExoPlayer.Builder(this).build()
val mediaItem = MediaItem.fromUri(Uri.parse("https://example.com/my_video.mp4"))
player.setMediaItem(mediaItem)
player.prepare()
player.play()
// Register player event listener
player.addListener(playerEventListener)
}
override fun onPause() {
super.onPause()
player.pause()
player.removeListener(playerEventListener)
}
override fun onResume() {
super.onResume()
player.play()
player.addListener(playerEventListener)
}
override fun onDestroy() {
super.onDestroy()
player.release()
}
private val playerEventListener = object : Player.EventListener {
override fun onPlaybackStateChanged(state: Int) {
if (state == Player.STATE_IDLE || state == Player.STATE_ENDED) {
// Unregister listener if idle or ended to prevent memory leaks
player.removeListener(this)
}
}
}
}