2012-12-04 73 views
1

我在ActivityB的Oncreate()中创建async任务。 在这项任务我正在一个无限while循环doInBackground()虽然我移动到前面胡亚蓉并附带再次向activityB,另一个异步任务得到了创建。doInBackground运行时可以停止asynctask吗?

我的问题现已有二无限while循环运行。当我转向上一个活动时是否可以停止异步任务?

+0

把''!isCancelled()''在你的循环条件中 然后调用''asyncTask.cancel(boolean); '' – 2012-12-04 07:33:23

+0

我需要调用asyncTask.cancel(boolean);? OnBackPressed功能? – Vignesh

+0

非常感谢特拉法加,它的工作很棒。 – Vignesh

回答

2

当然...退房isCancelled()

public Void doInBackground(....) { 

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

    return null; 
} 
+0

非常感谢323go,它的工作很棒。 – Vignesh

2

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

所有,通常情况是,会的AsyncTask执行onCancelled(),并且将无法运行onPostExecute()当它完成。

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

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

我会查看应用的设计和重新工作,它让这种情况不会出现,而不是试图取消运行异步任务。

相关问题