2011-02-02 15 views
3

私はアンドロイド2.2でアプリケーションを開発しています。デバイスの向きが変更されたときの黒い画面

デバイスの向きを変更すると(デバイスを回転して)、黒い画面が自分のアクティビティの境界にペイントされます(アクティビティのタイトルもありません)。数秒(7-15秒)ついに塗装されました。

私はエミュレータと2つの異なるデバイスをテストしており、動作は同じです。私は次の出力持ち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

+3

最初にアクティビティが正常に起動し、方向変更後にフリーズした場合、アクティビティティアダウンにもある可能性があります。 'onPause'やその他のライフサイクルの終わりのメソッドがある場合は、それらを参照すると便利です。 –

答えて

3

コメントありがとうございました。

問題は、私がアプリケーション(ListViewの2000個の行に近い)にある非常に大きなリストでした。私がそのリストを描かなければ、アプリケーションは正常です。

アイコンやテキストを含むすべての行が、あまりにも多いことは理解できます。

私はインデックス、またはアンドロイドマーケットの非常にインテリジェントなリストを実装することに決めました(このリストは素晴らしいです、索引付けされていませんが、近くにある行だけを描画します)。

デバイスが回転して(大きいリストで)リファレンスを削除しようとすると、それは長い時間がかかり、タイムアウトがスローされ、画面。しかし、それはちょうど仮定です

私はonPause()のリストをきれいにしようとしましたが、問題は解決しません。

とにかく問題がありました:アクティビティのオブジェクトが多すぎます。 私にとっての解決策:インデックス付きリストを使用する(アクティビティ内のViewオブジェクトをあまり使わないでください)。

これは他の人にとって役に立ちます。

+2

完全にはわかりませんが、 'ListView'を使用していますか?もしそうなら、あなたは 'ListAdapter'を使用して、必要に応じてアンドロイドにリスト項目の作成と再利用を要求させるべきです。これによりリソースが節約され、アプリのレスポンスが向上します。 – RivieraKid

+0

これはまさに私がやっていることです。コメントをいただきありがとうございます。 – forumercio

関連する問題