AsyncTask
親アクティビティが一時停止中 (onPaused)のときにキャンセルしています。私が観察しているのは、タスクが終了したことですが、パラメーター化されたバージョンのonCancelled
は決して呼び出されません。ただし、パラメーターなしのメソッドに置き換えると、onCancelled
常に期待どおりに呼び出されます。
私のコード:
//In the activity
@Override
protected void onPause() {
super.onPause();
System.out.println("ON PAUSE!");
if(lastTask != null){
lastTask.cancel(true);
}
}
//In asynctask implementation
@Override
protected Result doInBackground(Params... params) {
for(int i = 0;!isCancelled();i++){
System.out.printf(">>>>>>>>>>>>>> Doing some work. Iteration %d%n", i);
SystemClock.sleep(1000);
}
}
@Override
protected void onCancelled(Result result){
System.out.println("ON CANCELLED (args)!");
}
私はアンドロイド2.2 AVDでテストしています。
更新
ドキュメントによると、このメソッドは API レベル 11 で追加されました。API lv8 仮想デバイスでテストしていますが、lv16 用にコンパイルしています。したがって、このメソッドはデバイス OS には存在しません。おそらく、例外がスローされることを期待しています。