0

AsyncTask を無期限に実行していて、Android がメモリを解放するため、またはデバイスがスリープ モードになる (ユーザーが電源ボタンを押す) ため、タスクを強制終了する必要があると判断した場合、AsyncTask 内に通知を受け取る方法はありますか?未処理のタスクを完了するためのアクションを実行できるように、OS から強制終了されようとしていることを確認できますか?

4

1 に答える 1

1

簡単に答えるには:

AsyncTask は、関連付けられているプロセスが存在する限り存続します。プロセスがまだ実行されている場合 (バックグラウンドであっても)、OS は AsyncTask を強制終了しません。

また、AsyncTask はそれを開始したアクティビティとは独立して実行されることに注意してください。アクティビティは破棄される可能性があり、AsyncTask はプロセスが破棄されるまで存続します。

EDIT AsyncTask が OS によって破棄されたときに doInBackground が終了して onCancelled() メソッドが実行されるようにするには、doInBackground() メソッド内で isCancelled() を呼び出す必要があります。

要約すると、doInBackground メソッドでは常に isCancelled ブール関数をチェックします。true を返す場合は、doInBackground から戻ります。自動的に、onPostExecute の代わりに onCancelled 関数が実行されます。そこに、実行したいコードをその死の前に置くことができます。

于 2013-06-19T09:32:51.683 に答える