当父活动暂停(onPaused)时,我正在取消AsyncTask
。我所观察到的是任务终止,但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。
UPDATE
根据文档,这个方法是在API级别11中添加的。我正在测试API lv8虚拟设备,但是编译为lv16。因此,该方法在设备OS中不存在。我可能会期待一个例外。
答案 0 :(得分:3)
protected void onCancelled()是在API级别3上引入的。
其中, protected void onCancelled(结果结果)是在API级别11上引入的,即Android 3.0。
答案 1 :(得分:1)
{1}}是在API级别11中引入的,即Android 3.0。