がキャンセルされたonPostExecute
場合は実行されますか?AsyncTask
実行された場合、他のことをする前に、タスクがisCancelled
開始時にキャンセルされたかどうか()を常に確認する必要があると言っても差し支えありonPostExecute
ませんか?
がキャンセルされたonPostExecute
場合は実行されますか?AsyncTask
実行された場合、他のことをする前に、タスクがisCancelled
開始時にキャンセルされたかどうか()を常に確認する必要があると言っても差し支えありonPostExecute
ませんか?
文書化されたcancel()でのonPostExecuteの動作は、Android2とAndroid4の間で変更されました。
doInBackgroundの後にUIスレッドで実行されます。指定された結果は、doInBackgroundによって返される値であり、タスクがキャンセルされた場合、または例外が発生した場合はnullです。
doInBackgroundの後にUIスレッドで実行されます。指定された結果は、doInBackgroundによって返される値です。タスクがキャンセルされた場合、このメソッドは呼び出されません。
したがって、Android 2デバイスを引き続きターゲットにしている場合は、onPostExecuteが呼び出され、onPostExecuteでnullの結果がないかどうかを確認する必要があります。
私の経験では、タスクがキャンセルされたときにonPostExecute()は実際には呼び出されません。ただし、タスクのdoInBackground()が終了した後、onPostExecute()が呼び出される前に、タスクをキャンセルできる場合があります。この場合、onPostExecute()が実際に呼び出されます。したがって、確かに、onPostExecute()でisCancelled()メソッドを呼び出し、タスクがキャンセルされた場合は単に「return」します。わたしにはできる。
AsyncTaskのソースコードを確認したところ、タスクがキャンセルされてもonPostExecuteが呼び出されたようです。ただし、onPostExecuteを呼び出す前に、タスクがキャンセルされた場合、結果はnull(?)に設定されます。
編集:@bainは更新された回答を提供します。