0

在我的应用程序中,我使用 SurfaceView 显示本地视频。但是,在视频之间切换时,我注意到一个奇怪的(罕见的)错误:它们都重叠。

截屏: 截屏

有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。(没有音频)

我该如何解决?我以前使用的是 VideoView,但仍然遇到此问题。每次打开新视频时都会重新创建我的 VideoFragment。我尝试在片段的 onPause() 中发布视频,但仍然没有运气。

@Override
public void onPause()
{
    super.onPause();

    if (player != null && Video.getDownloaded())
    {
        if(player.isPlaying())
            player.stop();

        controller.hide();
        player.release();
    }
}

提前致谢,

~Pkmmte Xeleon

4

2 回答 2

2

简单地说,aSurfaceView是一个奇怪的“小部件”。小心对待他们。

尝试重新组织你的 UI 以拥有一个单一的SurfaceView(或者VideoView如果你回滚到那个)。例如,这可以固定在您的操作栏选项卡下方,而您的其余内容则位于其下方的片段中。在选项卡更改时,更新视频并替换主要片段。

或者,如果您只支持 API 级别 14+,请尝试TextureView改用。

于 2013-09-06T00:24:25.863 回答
0

我使用surfaceView 作为视频的表面或在表面上绘制一些东西。当我非常快速地切换 Activity 时,例如切换到 Activity B 并非常快速地切换回来,有两个表面重叠。

dumpsys SurfaceFlinger,输出中有两个surfaceview。

我尝试修改surfaceflinger,当destroy surface被调用时,即使它与layerbase分离,也要销毁它。

而这个问题就消失了。

于 2020-06-25T05:52:02.667 回答