我正在取消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)!");
}
我在 android 2.2 AVD 中进行测试。
更新
根据文档,此方法是在 API 级别 11 中添加的。我正在 API lv8 虚拟设备中进行测试,但正在为 lv16 编译。所以这个方法在设备操作系统中不存在。我可能会期待一个例外。