0

任何人都知道是否可以在没有循环的情况下杀死/停止 AsyncTask。有很多关于循环的例子,但我应该在doInBackground()函数中执行的任务只有一个函数,在某些情况下需要很长时间,我将在onPause中停止它。如果可能的话,或者我应该使用另一个任务,例如 Futuretask。

提前致谢。

像这样的代码:

class ProcessTask extends AsyncTask<Void, Void, Boolean> {

    @Override
    protected Boolean doInBackground(Void... params) {
        Log.i(TAG, " ---- ProcessTask -- doInBackground ----");
        // Task
    }

    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        Log.i(TAG, " ---- ProcessTask -- onPostExecute ----");
    }

    @Override
    protected void onCancelled(Boolean result) {
        super.onCancelled(result);
        Log.i(TAG, " ---- ProcessTask -- onCancelled ----");
    }
}

... 
ProcessTask myTask;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    myTask = new OCRProcessTask();
    myTask.cancel(false);
    myTask.execute();
}

@Override
public void onPause() {
    myTask.cancel(true);
}
4

1 回答 1

0

AsyntTask您可以通过设置cancel(true)任务取消。

new MyAsyncTask().cancel(false);
于 2013-09-09T08:51:39.790 回答