小编Psi*_*loc的帖子

Android SurfaceView导致屏幕闪烁

我正在研究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

更新:我已经设法找到了一个解决方法,现在通过覆盖setPrimaryItem()方法FragmentPagerAdapter来调用一个方法,在视频播放器停止显示时SurfaceView从层次结构中删除(removeView()在其LinearLayout容器上使用)Fragment,然后恢复SurfaceView它的活动时再次.不幸的是,当这种情况发生时仍然有点眨眼,所以如果有人有额外的想法,我将不胜感激!

android flicker surfaceview android-fragments android-mediaplayer

7
推荐指数
1
解决办法
3218
查看次数