我在ActivityB Oncreate()中创建了异步任务。 在那个任务中,我正在 doInBackground()中运行无限循环。当我移动到先前的活动并再次进入activityB时,另一个异步任务被创建。
我的问题现在是两个无限循环运行。移动到上一个活动时是否可以停止异步任务?
答案 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
我会检查您应用的设计并重新设计,以便不会出现这种情况,而不是尝试取消正在运行的异步任务。