Android AsyncTask和Thread生命周期

时间:2011-09-09 15:03:34

标签: android multithreading

我对AsyncTask和Thread生命周期有点困惑。 操作系统进入OnStart / OnStop和onResume / onPause序列时,进程线程会发生什么。 线程是否受此序列影响。 我问这个问题是因为我在线程中使用套接字并且杀死线程也会杀死tcpip连接(我假设)。 如果thredas没有被杀死那么我如何“重新连接”他们,特别是因为他们可能会通过处理程序“连接”到活动。

2 个答案:

答案 0 :(得分:1)

当应用程序转到onStop或onPause时,线程不会自动终止,但是,无法保证不会被杀死。 Android将继续运行,直到它需要线程正在使用的资源。

通常,如果您希望在Activity关闭时建立持久连接,请将其放在Service中。你可以像活动一样在其中运行线程(以防止通常在连接时发生阻塞),并且Android杀死它的可能性要小得多。

答案 1 :(得分:0)

在内部,AsyncTask使用固定线程池。 (见http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html

所以,即使AsyncTask完成,线程也不会死。但线程池中的线程可能会被杀死。