2011-07-22 10 views
2

私はアプリケーションをテストしています。ここに私のシナリオですバインダースレッド、プログレスバーとOutOfResourcesExceptions

1)私のワーカースレッドから、私はプログレスバーを表示します(私はUIに作成されたハンドラにメッセージを渡しています)。私は、進行状況ダイアログをdissmis)ワーカースレッド

3で操作を実行)pd.show()が呼び出されるまで、私は私のワーカースレッドが

2を再開し、私のワーカースレッドを待ちます。ここでも、私はui上に作成されたハンドラにメッセージを渡して、pd.dismissが呼び出されるまでワーカースレッドを待っています

ストレステストのために、これを10000反復ループに入れました。私のNexusで大部分はうまく動作します。銀河のタブとすべてのモトローラデバイスで、約50回反復した後、私のアプリは強制終了します。私はBinderThreadsがゆっくりと16に成長し、成長を止めるのを見る(私は16がBinderThreadsの最大限であることを知っている)。 Nexus Oneでは、後で問題が発生します。進捗ダイアログを却下した後、私はそれが何にも上に保持されていないことを確認するために、nullに設定しています:私は銀河タブとモトデバイス

W/WindowManager(1363): OutOfResourcesException creating surface 
I/WindowManager(1363): Out of memory for surface! Looking for leaks... 
W/WindowManager(1363): No leaked surfaces; killing applicatons! 

編集のlogcatにこれを得ました。

アイデア?

おかげで、

Veeresh

答えて

0

はたぶん、あなたはより多くの表面を作成するための十分なメモリを持っていません!

0

私のケースでは、プログレスバーのインジケーターのいとこである95個のダイアログボックスが出現するバグがありました。だから、リソース不足例外が発生しました

0

このアクティビティのhwレンダリングを無効にしてみてください。

HWアクセラレーションによる例外の場合に役立ちます。

最近私のアプリケーションで同様の問題が修正されました。

しかし、この問題の原因を修正するのは本当に難しいかもしれません。 :(

関連する問題