如何释放Exoplayer PlayerView的播放器?

How to release the player of the Exoplayer PlayerView?

我在我的应用程序的两个片段中使用了两个不同的 PlayerView 实例 (com.google.android.exoplayer2.ui.PlayerView)。这两个 Playerview 实例都为播放器使用相同的 SimpleExoPlayer 实例。在 fragment1 中,playerView1 工作正常,当我转到 fragment2 时,使用相同 SimpleExoPlayer 实例的 playerView2 工作正常。问题是当我回到 fragment1 时,playerView1 没有显示任何内容。我想在回到第一个片段之前我应该​​释放 playerView2 的播放器,但我不知道如何。

在片段 1 (kotlin) 中:

playerView1.player = myGlobalSimpleExoPlayer

在 fragment2 (kotlin) 中:

playerView2.player = myGlobalSimpleExoPlayer

在尝试了不同的方法后,我终于找到了解决办法。我在这里分享解决方案,也许它对其他有同样问题的人有用。

在设置 PlayerView 播放器之前的每个片段中,我为播放器设置了 null 值(您应该在每次切换片段时都这样做,而不仅仅是第一次):

playerView.player = null // add this before setting the actual player
playerView.player = myGlobalSimpleExoPlayer
PlayerView.switchTargetView()

是正确的做法