Android 如何释放Exoplayer PlayerView的玩家?

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

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

在片段1(kotlin)中:

在片段2中(kotlin):


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

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


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

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

这是正确的方法吗


正确的方法是这样做的吗

您得到的是黑屏吗?是的,当我返回到第一个片段时,视图显示黑屏您是否尝试过playerView.setKeepContentOnPlayerSet(true);。这是Exoplayer的一般问题。不,我应该在第一个片段或第二个片段中使用它,还是同时在两个屏幕上使用相同的视频?如果是,则可以使用共享元素概念。在我的例子中,它是由setKeepContentOnPlayerReset解决的。但是我使用了共享元素的概念,就像我在使用同一个视频一样。你得到了黑屏吗?是的,当我返回到第一个片段时,视图显示了黑屏。你是否尝试过playerView.setKeepContentOnPlayerSet(true);。这是Exoplayer的一般问题。不,我应该在第一个片段或第二个片段中使用它,还是同时在两个屏幕上使用相同的视频?如果是,则可以使用共享元素概念。在我的例子中,它是由setKeepContentOnPlayerReset解决的。但我使用了共享元素的概念,就像我使用相同的视频一样
playerView1.player = myGlobalSimpleExoPlayer
playerView2.player = myGlobalSimpleExoPlayer
playerView.player = null // add this before setting the actual player
playerView.player = myGlobalSimpleExoPlayer
PlayerView.switchTargetView()