【发布时间】:2012-08-27 06:56:21
【问题描述】:
我正在开发适用于 Android 的多媒体视频处理应用程序,但遇到了一些问题。我正在使用 FragmentPagerAdapter 类,其中包含许多不同的片段,用于视频处理的各个步骤。
我的第一个 Fragment 包含一个 SurfaceView 和一个 MediaPlayer ,以及各种播放控件。当我从片段 1(使用 SurfaceView)滑动到片段 2(此时为空)时,我的问题发生了。如果我还没有打电话给start(),则不会发生任何异常情况,并且我可以正常在片段之间滑动。但是,一旦我调用start(),当我滑动到下一个Fragment 时,整个屏幕就会开始闪烁,即使我已将MediaPlayer 置于空闲状态并且它没有向SurfaceView 提供帧。唯一能阻止这种情况的方法是通过滑动到第三个Fragment 来破坏表面以及包含视图,因此FragmentPagerAdapter 会破坏Fragment 一个,或者通过主页或后退按钮退出应用程序以便销毁视图。
我一生都无法弄清楚为什么会发生这种情况,除此之外,SurfaceView 渲染线程可能会以某种方式干扰主 UI 线程。 LogCat 上也没有出现任何异常,所以我有点卡住了。我正在运行一个带有 android 4.1 的 Galaxy Nexus 作为我的测试硬件。
任何帮助将不胜感激!
JT
更新:我现在设法通过覆盖FragmentPagerAdapter 中的setPrimaryItem() 方法来调用从层次结构中删除SurfaceView 的方法(使用@ 987654338@ 在其LinearLayout 容器上)当视频播放器Fragment 停止显示时,然后在SurfaceView 再次处于活动状态时恢复。不幸的是,发生这种情况时仍然有点眨眼,所以如果有人有其他想法,我将不胜感激!
【问题讨论】:
-
检查这个答案。您的问题与此类似:Link
标签: android android-fragments surfaceview android-mediaplayer flicker