我正在开发面向Android的多媒体视频处理应用程序,并且遇到了一些问题。我正在使用FragmentPagerAdapter
类,其中有许多不同的片段用于各种视频处理步骤。Android SurfaceView导致屏幕闪烁
我的第一个Fragment
包含SurfaceView
和MediaPlayer
,它连同各种播放控件一起提供它。当我从片段1(使用SurfaceView)滑动到片段2(此时为空)时,发生了我的问题。如果我还没有叫start()
,没有什么不寻常的事情发生,我可以正常地在片段之间滑动。但是,一旦我拨打start()
,即使我已将MediaPlayer
置于空闲状态,并且不会将帧传送到SurfaceView
,但当我滑动到下一个Fragment
时,整个屏幕开始闪烁。唯一能够阻止这种情况的方法是通过滑动到第三个Fragment
以使Fragment
破坏Fragment
,或者通过home或back按钮退出应用程序以销毁视图。
我不能为我的生活弄清楚为什么会发生这种情况,除此之外也许SurfaceView
渲染线程以某种方式干扰主UI线程。 LogCat上也没什么不寻常的,所以我有点卡住了。我使用android 4.1运行Galaxy Nexus作为我的测试硬件。
任何帮助,将不胜感激!
JT
更新:我设法找到一个解决办法,现在通过覆盖在FragmentPagerAdapter
的setPrimaryItem()
方法来调用从层次结构中删除SurfaceView
的方法(在其LinearLayout
容器使用removeView()
)当视频播放器Fragment
停止显示时,然后在其再次激活时恢复SurfaceView
。不幸的是,当这种情况发生时,仍然有点眨眼,所以如果有人有其他想法,我会很感激!
检查这个答案。你的问题是这样的:[链接](http://stackoverflow.com/questions/8772862/surfaceview-flashes-black-on-load) – RATHI