【发布时间】:2017-05-15 06:44:23
【问题描述】:
我看过一些关于这个主题的帖子,但没有一个给出令人满意的答案。
假设我在其onCreate() 方法中从我的主(唯一)Activity 启动一个工作线程。然后我调用finish() 导致Activity 终止。
此时,它所属的任务被销毁(因为其中不再有任何Activity)。然而,应用程序(以及运行它的进程)可能会继续以空的“骨架”形式存在,以便在需要时可以快速重新启动它(尽管它很容易被系统杀死)。
假设以上是正确的——工作线程什么时候被杀死?是不是只有系统主动销毁进程才被杀死?
就我而言,我的工作线程作为蓝牙连接的侦听器存在;收到后,它将再次启动所需的Activity。在这种情况下,没有正在运行的组件(Activity、Service、ContentProvider 或 BroadcastReceiver)。在我看来,这应该可行,只是有些东西正在杀死我的工作线程。
我知道我可以通过使用背景Service 来做到这一点(并且痛苦更少)。但是,我很好奇为什么这不起作用。
谢谢, 巴里
【问题讨论】:
-
相信只有在Linux进程被销毁的时候,Thread才会被自动杀死。
-
“在我看来,这应该可行,只是有些东西正在杀死我的工作线程” 这只能表示system terminated the app process。 “是否只有在系统主动销毁进程时才被杀死?”正确(或者如果
run()方法返回)。 -
同意。那么问题就变成了,该进程何时被终止?我的猜测是,当没有更多正在运行的组件时它会被杀死,但我还没有在任何地方看到明确记录。下面是我对 Oleg 的 BroadcastReceiver 响应的更多信息。
标签: android multithreading android-activity worker-thread