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