0

我的应用程序包含一个Activity,它启动了一堆AsyncTasks和递归函数。一切正常 - 甚至当我通过backhome按钮离开我的活动时。Android - 离开活动时停止所有线程

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

编辑

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

+0

从理论上讲,Android已经为您负责。 – m0skit0 2013-02-20 15:36:13

+3

不,它不。否则我不会问这个问题,对吧? ;) – Ron 2013-02-20 15:36:37

+0

尝试用'System.exit()'。这将确保进程被销毁(因此所有连接的线程)。哦,*线程不是进程*。 – m0skit0 2013-02-20 15:39:18

回答

1

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

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

asyncTask.stop(boolean) 

那么,它不会直接阻止你的AsyncTask但在doInBackground方法,你需要不断地检查isCancelled值,如果真那么刚刚结束的doInBackground并跳过postExecute在适当的状态返回值。据我所知,这是唯一的方法。

+0

是“OnStop”和“OnDestroy”,涵盖了离开活动的所有可能性? – Ron 2013-02-20 15:48:21

+0

当然,请参阅Android活动生命周期。 – Rajnikant 2013-02-20 15:49:31

+0

谢谢,我会试试你的方法。 – Ron 2013-02-20 15:51:58

-2

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

所以,你可以这样做:

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

而且在重建的onResume他们()。

相关问题