在onCancelled中重启AsyncTask的执行

时间:2014-05-17 15:48:30

标签: android

我正在doInBackground取消当前正在运行的任务,并在发生异常时调用cancel(false)

因为我正在调用cancel(false)它将让当前正在运行的任务完成,然后将调用onCancelled。 现在在onCancelled内我想通过调用execute()重新执行相同的任务,但我在execute()函数调用时遇到错误

E/AndroidRuntime(30430): FATAL EXCEPTION: main
java.lang.IllegalStateException: Cannot execute task: the task is already running.

4 个答案:

答案 0 :(得分:3)

您不能多次执行AsyncTask。

您应该创建一个新的任务实例,例如:new MyAsyncTask().execute();

答案 1 :(得分:0)

你不能这样做,伙计! AsyncTask具有生命周期,以其内部状态表示。它只能执行一次。查看"线程规则" here

答案 2 :(得分:0)

正如文档所说,"任务只能执行一次(如果尝试第二次执行则会抛出异常。)"

AsyncTask

答案 3 :(得分:0)

您应该通过调用AsyncTask.cancel(true)来取消asynctask,并且可以在执行异步任务之前检查它是否已经通过获取其状态来运行