當父活動暫停(onPaused)時,我取消AsyncTask
。我正在觀察的是該任務已終止,但從未調用onCancelled
的參數化版本。但是,如果將其替換爲無參數onCancelled
方法,它將始終按預期調用。AsyncTask:onCancelled(Result)not called
我的代碼:
//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。所以這種方法在設備操作系統中不存在。我可能會期待一個例外。
我剛剛更新了我的問題與這個信息,但這是之前張貼,如此解決。順便說一句,爲什麼調用一個不存在的方法時不會引發異常? –
我想你用一個足夠高的Project Build Target編譯和/或在清單文件中指定了足夠高的minSdkVersion。儘管如此,我也覺得這很奇怪。 – Ridcully