gpt4 book ai didi

android - 生成线程的进程的生命周期

转载 作者:行者123 更新时间:2023-11-30 01:49:48 25 4
gpt4 key购买 nike

假设我在 list 中注册了一个 BroadcastReceiver,但我的应用未激活。因此,将产生新进程,并在该新进程的主线程上触发 BroadcastReceiver 的 onReceive() 方法。

现在,我从 onReceive() 方法生成一个线程(我知道不推荐这样做,应该使用 Service 来延长 onReceive() 之外的进程生命周期)。

我很好奇生成的线程(假设它无限期地运行)会让进程保持 Activity 状态吗?考虑到 JVM 它应该,因为 JVM 不会退出,直到有 Activity 的非守护线程。那艺术呢? ART 不是 JVM,它是一个编译器,编译后的应用程序的行为可能会有所不同,比如终止进程并因此终止所有线程,无论它们是否仍在运行。有人对这种情况有见解吗?

最佳答案

这完全取决于运行时环境和操作系统。代码是编译还是解释都不会影响进程/应用程序的终止决定。

长版:

只是为了澄清一些事情:ART 不是编译器。它是一个运行时环境。dex2oat 是编译器驱动程序。如果我正确理解了您的场景,就会向操作系统发送广播,从而启动您的应用程序。在 onReceive 方法中启动一个线程。

应用程序可能不是 100% AOT compiled .这意味着一些部分将由 ART 解释,而大部分将由 ART 本地执行。所以 ART 是一个也有解释器的运行时。是否终止广播处理程序中的线程的决定不取决于代码是 native 执行还是解释。操作系统可能会在内存不足时决定终止进程,或者如果运行时检测到它永远运行,则运行时会中断其执行,等等。

所以,不用担心编译代码,只需与操作系统(服务?)很好地配合即可。

关于android - 生成线程的进程的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33234629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com