2

アプリケーションのストレス テストを行っています。これが私のシナリオです

1)ワーカースレッドから進行状況バーを表示します(UIで作成されたハンドラーにメッセージを渡しています)。pd.show() が呼び出されるまでワーカー スレッドで待機してから、ワーカー スレッドを再開します

2) ワーカースレッドで操作を実行する

3) 進行状況ダイアログを閉じます。繰り返しますが、UI で作成されたハンドラーにメッセージを渡し、pd.dismiss が呼び出されるまでワーカー スレッドを待機しています。

ストレス テストのために、これを 10000 回の反復ループに入れました。私のNexus 1では、ほとんど問題なく動作します。Galaxyタブとすべてのmotorolaデバイスで、約50回ほど繰り返した後、アプリが強制終了します。BinderThreads がゆっくりと 16 まで成長し、成長が止まるのがわかります (16 が BinderThreads の最大制限であることはわかっています)。Nexus One では、これらは後で問題を引き起こします。これは、galaxy tab と moto デバイスの logcat で取得しました

 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!

編集:進行状況ダイアログを閉じた後、何も保持していないことを確認するために、それをnullに設定しています。

何か案は?

ありがとう、

ヴィーレッシュ

4

3 に答える 3

0

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

于 2012-08-30T18:56:19.453 に答える
0

より多くのサーフェスを作成するためのメモリが不足している可能性があります!

于 2011-07-22T20:25:32.563 に答える
0

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

ハードウェア アクセラレーションによって例外が発生した場合に役立ちます。

最近、アプリケーションで同様の問題を修正しました。

しかし、この問題の原因を修正するのは非常に難しい場合があります。:(

于 2013-11-06T10:30:10.270 に答える