JC2*_*C23 6 android android-fragments exoplayer2.x
我有一个带有2个片段的活动(不是ViewPager),并且想在其中一个片段中使用ExoPlayer2播放内容。最初的片段显示了一个内容列表,单击时显示了第二个片段,以播放选定的内容。但是,当我单击返回到初始片段时,仍然可以听到内容的播放。好像第二个片段仍然打开。我正在(尝试)通过这种方式释放播放器:
@Override
public void onStop() {
super.onStop();
releasePlayer();
}
public void releasePlayer() {
if (player != null) {
player.setPlayWhenReady(true);
player.stop();
player.release();
player = null;
trackSelector = null;
simpleExoPlayerView.setPlayer(null);
simpleExoPlayerView = null;
System.out.println("releasePlayer");
}
}
Run Code Online (Sandbox Code Playgroud)
我读了这篇文章,但是并没有提供很多解决方案。另外,请阅读几篇在ViewPager片段中使用ExoPlayer的文章,但不能完全确定这些示例如何释放播放器。遵循此处演示应用程序中的releasePlayer()方法,但没有运气。从onPause(),onDetach(),onDestroyView()调用releasePlayer(),但没有区别。
这是在将侦听器添加到播放器之后设置的一些日志记录,但是没有看到任何解释它为什么不释放的信息...
07-05 19:01:07.216 2529-2643/? V/RenderScript: 0xe0494000 Launching thread(s), CPUs 4
07-05 19:01:11.871 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:11.876 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onTimelineChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onLoadingChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onTimelineChanged...
07-05 19:01:11.904 3064-3064/? V/MediaCodecInfo: Listener-onLoadingChanged...
07-05 19:01:12.467 3064-3064/? V/MediaCodecInfo: Listener-onTimelineChanged...
07-05 19:01:12.468 3064-3064/? V/MediaCodecInfo: Listener-onTimelineChanged...
07-05 19:01:12.515 3064-3099/? V/SoftFFmpegVideo: got OMX_IndexParamPortDefinition, width: 320, height: 180
07-05 19:01:12.708 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:12.708 3064-3064/? V/MediaCodecInfo: Listener-onPlayerStateChanged...
07-05 19:01:13.380 3064-3064/? V/MediaCodecInfo: Listener-onLoadingChanged...
07-05 19:01:13.655 3064-3064/? V/MediaCodecInfo: Listener-onLoadingChanged...
07-05 19:01:18.528 3064-3099/? V/SoftFFmpegVideo: ~SoftFFmpegVideo
Run Code Online (Sandbox Code Playgroud)
尝试单击按钮,但失败
fragmentExoBinding.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("button click");
releasePlayer();
}
});
Run Code Online (Sandbox Code Playgroud)
每当我关闭它时(无论是使用后按,居家还是最近),它都崩溃了。使用if(player!= null)更新了releasePlayer()方法,但即使单击按钮后仍能听到播放的内容。
我在 Activity 中使用 ExoPlayer,并且使用两步过程。onPause我正在停止播放:
private SimpleExoPlayer player;
@Override
protected void onPause() {
super.onPause();
// Pause video if it's playing
if (isVideoPlaying()) {
if (player != null)
player.setPlayWhenReady(false);
}
}
Run Code Online (Sandbox Code Playgroud)
然后onDestroy我释放了播放器
@Override
protected void onDestroy() {
releasePlayer();
super.onDestroy();
}
private void releasePlayer() {
if (player != null) {
player.stop();
player.release();
player = null;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |