我正在取消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 编译。所以这个方法在设备操作系统中不存在。我可能会期待一个例外。