0

したがって、すべての計算をアプリの AsyncTask にして、UI の変更を onPostExicute メソッドまで残した後、AsyncTask を作成するクラスのすべての変数を初期化するだけでもアプリが ANR を取得することに気付きました。これが私が話しているコードです:

http://pastebin.com/BB8M9afE (メモにあるものは、私が遊んでいるコードの一部です)

さらにコードが必要な場合は、投稿できます。スレッド化クラスで ANR が発生しないようにするにはどうすればよいですか?

コード ノート: ColorFloodGame(6,6) は int の配列を math.random() 値で埋めます。GuiThreader は ColorFloodGame(6,6) を作成し、それを "Play" のエイリアスにし、同じことを行う GUI ドライバーを作成します。

4

1 に答える 1

4

「adb shell cat /data/anr/traces.txt」を使用して、最後の ANR のスタック クロールを確認します。リストの最初のスタックはアプリのメイン スレッド用であるため、ANR が発生したときにアプリが何をしていたかを示しています。あなたが何をしているのかを判断するのに時間がかかる場所を見てください。

于 2011-05-09T20:29:32.993 に答える