AsyncTask:未调用onCancelled(Result)

时间:2012-09-28 09:34:30

标签: android android-asynctask

当父活动暂停(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中不存在。我可能会期待一个例外。

2 个答案:

答案 0 :(得分:3)

protected void onCancelled()是在API级别3上引入的。

其中, protected void onCancelled(结果结果)是在API级别11上引入的,即Android 3.0。

答案 1 :(得分:1)

{1}}是在API级别11中引入的,即Android 3.0。