0

私の downloadFile AsyncTask は、2g ネットワークを介した同時ダウンロードの場合、かなりの時間を必要とする場合があります。私はそれが殺されているのではないかと疑っていますが、よくわかりません。

私の質問は: asynctask のタイムアウトとは何ですか? Android が私のタスクを強制終了したときに呼び出される関数は何ですか? 例外がスローされた場合、どこでキャッチしますか?

4

1 に答える 1

0

Android はあなたのタスクを殺すべきではありません。AsyncTask はまさに非同期であるため、Android は ANR をスローしません。

doInBackground 内で例外をテストする場合は、コードを関連する try catch ブロックでラップし、例外が発生した場合は例外をスローまたは処理します。

AsyncTask をキャンセルすることはできますが、タスク内で適切な間隔でisCancelledフラグを確認する必要があります。

タスクをキャンセルすると、onPostExecute()は呼び出されません。

もちろん、さらに読むことができます:http://developer.android.com/reference/android/os/AsyncTask.html

追加: おそらく重要なのは、Android Ice Cream Sandwich とおそらく Honeycomb がデフォルトとしてスレッド プールの実行から移行し、代わりにシリアル化されたアプローチを使用していることです。ICS でタスクが実行されていないように見える場合、または長時間待機した後に実行された場合は、パラメーターを使用して実行しexecuteOnExecutor()、渡す必要がありTHREAD_POOL_EXECUTORます。詳細については、上記のリンクを参照してください。

于 2012-07-02T13:51:43.287 に答える