0

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)!");
    }

私はアンドロイド2.2 AVDでテストしています。


更新
ドキュメントによると、このメソッドは API レベル 11 で追加されました。API lv8 仮想デバイスでテストしていますが、lv16 用にコンパイルしています。したがって、このメソッドはデバイス OS には存在しません。おそらく、例外がスローされることを期待しています。

4

2 に答える 2

3

protected void onCancelled()はAPIレベル3で導入されました。

一方、protected void onCancelled(結果結果)はAPIレベル11、つまりAndroid3.0で導入されました。

于 2012-09-28T09:46:42.270 に答える
1

onCancelled(Result result)API レベル 11、つまり Android 3.0 で導入されました。

于 2012-09-28T09:44:14.923 に答える