在doInBackground运行时是否可以停止asynctask?

时间:2012-12-04 07:29:00

标签: android android-asynctask

我在ActivityB Oncreate()中创建了异步任务。 在那个任务中,我正在 doInBackground()中运行无限循环。当我移动到先前的活动并再次进入activityB时,另一个异步任务被创建。

我的问题现在是两个无限循环运行。移动到上一个活动时是否可以停止异步任务?

2 个答案:

答案 0 :(得分:2)

当然......结账isCancelled()

public Void doInBackground( .... ) {

   while( !isCancelled() ) {
       ...endless activity...
   }

   return null;
}

答案 1 :(得分:2)

Cancel()方法,但调用 cancel(boolean mayInterruptIfRunning) 并不一定会停止执行后台进程。

所有通常发生的事情是AsyncTask将执行onCancelled(),并且在完成时不会运行onPostExecute()。

请参阅文档(“取消异步任务”部分)

http://developer.android.com/reference/android/os/AsyncTask.html

我会检查您应用的设计并重新设计,以便不会出现这种情况,而不是尝试取消正在运行的异步任务。