我在 ActivityB Oncreate() 中创建为异步任务。在那个任务中,我在doInBackground()中运行了一个无限循环当我移动到上一个活动并再次进入活动 B 时,创建了另一个异步任务。
我的问题现在是两个无限循环正在运行。当我移动到上一个活动时,是否可以停止异步任务?
我在 ActivityB Oncreate() 中创建为异步任务。在那个任务中,我在doInBackground()中运行了一个无限循环当我移动到上一个活动并再次进入活动 B 时,创建了另一个异步任务。
我的问题现在是两个无限循环正在运行。当我移动到上一个活动时,是否可以停止异步任务?
当然...查看isCancelled():
public Void doInBackground( .... ) {
while( !isCancelled() ) {
...endless activity...
}
return null;
}
有一个Cancel()
方法,但调用cancel(boolean mayInterruptIfRunning)
并不一定会停止后台进程的执行。
通常发生的情况是 AsyncTask 将执行 onCancelled(),并且在完成时不会运行 onPostExecute()。
请参阅文档(“取消异步任务”部分)
http://developer.android.com/reference/android/os/AsyncTask.html
我会审查您的应用程序的设计并对其进行重新设计,以免出现这种情况,而不是尝试取消正在运行的异步任务。