1

我的应用程序包含一个Activity启动一堆AsyncTasks递归函数。一切正常 - 即使我通过backhome按钮离开我的活动。

是否有一个简单的解决方案可以在离开活动时停止一切?

编辑

我的后台线程进行 http 调用等。通过我的日志,我可以看到线程仍在运行。

4

2 回答 2

2

没有直接的方法可以取消所有后台线程。

您需要调用以下方法来停止 AsyncTask 的活动的 OnStop 或 onDistroy。

asyncTask.stop(boolean)

好吧,它不会直接阻止你 asyncTask 但在 doInBackground 方法中你需要继续检查isCancelled值,如果它是真的,那么只需结束 doInBackground 并跳过 postExecute 以获得适当的状态返回值。这是我所知的唯一方法。

于 2013-02-20T15:42:29.267 回答
-2

您可以在活动中覆盖 onPause() 以停止线程。

所以你可以这样做:

@Override    
public void onPause(){
    super.onPause()
    // Stop threads here
}

并在 onResume() 中重新创建它们。

于 2013-02-20T16:33:20.487 回答