2011-02-02 114 views
3

我正在開發android 2.2中的應用程序。設備方向更改時出現黑屏

當改變設備的方向(通過旋轉設備)在我的活動範圍內畫一個黑色的屏幕(甚至沒有活動標題),它需要幾秒鐘(7-15秒),然後活動終於畫了。

我測試過它的仿真器和兩個不同的設備,行爲是一樣的。

在logcat中我有一個輸出:

02-02 09:18:06.044: WARN/WindowManager(1300): MyActivity freeze timeout expired. 

02-02 09:18:06.044: WARN/WindowManager(1300): Force clearing freeze: AppWindowToken{4515af88 token=HistoryRecord{44f52458 com.project.package/.MyActivity}} 

02-02 09:18:08.054: WARN/WindowManager(1300): Window freeze timeout expired. 

02-02 09:18:08.054: WARN/SurfaceFlinger(1300): timeout expired mFreezeDisplay=1, mFreezeCount=0 

02-02 09:18:08.054: WARN/WindowManager(1300): Force clearing orientation change: Window{45178a00 com.project.package/com.project.package.Activity paused=false} 

我不知道爲什麼會發生。 感謝您的意見,建議,答案。

+2

你可以發佈你的`onCreate`&`onResume`嗎? – xil3 2011-02-02 14:02:26

+3

如果活動一開始就正常啓動,然後在方向更改後凍結,它也可能是活動拆卸中的某些內容。如果你有它們,看到`onPause`或其他'生命週期結束'方法可能是有用的。 – 2011-02-02 14:13:18

回答

3

感謝您的意見,對於遲到的答案感到抱歉。

問題是我的應用程序中有一個很大很大的列表(在ListView中接近2000行)。如果我沒有繪製這個列表,那麼應用程序就沒問題。

可以理解的是,2000行,每一個圖標和文字都太多了!

所以我決定實現一個索引,或者非常智能的Android Market列表(這個列表很棒,沒有編入索引,但只畫出你近距離看到的行)。

我想,當設備旋轉(與大列表)它試圖刪除引用,或類似的東西,這需要很長的時間,並引發超時,這是什麼顯示黑色屏幕。但它只是一個假設

我試圖清理onPause()中的列表,但它不能解決問題。

無論如何,問題是:太多查看活動中的對象。 對我來說這個解決方案:使用索引列表(不要在很多View對象中使用Activity)。

希望這對其他人有用。