在我的应用中,我使用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
答案 0 :(得分:2)
简而言之,SurfaceView
是一个奇怪的“小部件”。小心对待他们。
尝试重新组织您的用户界面以获得一个SurfaceView
(或VideoView
如果您回滚到那个)。例如,可以将其固定在操作栏标签下方,其余内容位于其下方的片段中。在选项卡更改时,更新视频并替换主片段。
或者,如果您只支持API Level 14+,请尝试使用TextureView
。
答案 1 :(得分:0)
我将surfaceView用作视频的表面或在该表面上绘制一些东西。 当我快速切换活动时,例如切换到活动B并快速切换回去,这两个表面重叠。
dumpsys SurfaceFlinger,输出中有两个Surfaceview。
我尝试修改surfaceflinger,当破坏表面被调用时,即使它与layerbase分离,也将其破坏。
这个问题消失了。