まれに、AsyncTasksの1つでこの不思議なRuntimeExceptionが発生します。アプリにAsyncTasksを実装する場所は複数ありますが、これらのエラーをどれだけ掘り下げても、このRuntimeExceptionがスローされる理由や発生しているスレッドに関する情報を取得できないようです。 completeAbruptly = true "非同期タスクにはキャッチされない例外があると思いますが、どこから始めればよいのかさえわかりません...アイデア?ありがとう!
質問する
963 次
2 に答える
4
completedAbruptly=true
実行されたタスクが例外をスローしたときに発生します。そして、のタスクはメソッドAsyncTask
を実行するdoInBackground
ことです。
doInBackground
コードをtry
/catch
ブロックにラップし、発生した例外を出力させることをお勧めします。
protected Void doInBackground(Void... params) {
try {
// ----------
// do stuff
return null;
// ----------
} catch (Throwable t) {
Log.e("AsyncTask", "OMGCrash", t);
// maybe throw it again
throw new RuntimeException(t);
}
}
これは、このすべてが発生する理由を示しているはずです。
于 2012-09-14T18:20:28.070 に答える
2
ソースコードによると、completedAbruptly
はユーザーの操作によりスレッドが終了したことを示しています。非同期タスクが完了する前にアクティビティが終了すると、例外が発生すると思います。この可能性を捨てるのは簡単なはずです。AsyncTasksの1つを無限ループに置き換えて、エミュレーターで「戻る」を押すだけです。
于 2012-09-14T17:58:16.897 に答える