我正在開發面向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