2

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

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

4

2 回答 2

3

当然...查看isCancelled()

public Void doInBackground( .... ) {

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

   return null;
}
于 2012-12-04T07:33:31.950 回答
2

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

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

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

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

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

于 2012-12-04T07:36:02.897 回答