Android应用程序VM什么时候退出?

时间:2011-02-28 12:05:48

标签: java android virtual-machine

我想知道应用程序VM何时退出Android应用程序?

我问我的原因是我在考虑什么时候会清除任何杂散线程或无效的单例引用,这在我看来就是当进程被终止或VM退出时。

我的印象是,当调用所有打开的活动onDestory()时,VM将退出,或者如果应用程序在后台并且由于内存限制而不得不被杀死,则VM将被杀死(以及过程)。

我想我的问题是:

  1. 我对VM退出时的假设是否正确?
  2. 这会确保清除任何杂散线程和未使用的单例自引用吗?

2 个答案:

答案 0 :(得分:4)

  

我想知道应用程序VM何时退出Android应用程序?

可以说,它不会退出。整个过程终止。这将在没有更多运行组件之后的某个时间发生。你的过程需要多长时间取决于手机上的RAM数量,发生的其他事情等等。

  

我的印象是,当所有打开的活动上的onDestory()被调用时,VM将退出

最后一个组件(例如,活动)被销毁和流程终止之间可能存在延迟。

  

或者如果应用程序在后台并且由于内存限制而不得不被杀死,则VM将被终止(与进程一起)。

Android的VM可以将RAM返回到操作系统,因此当RAM紧张时,Android会破坏活动,而不是进程。现在,如果Android破坏了流程中的所有活动,它也可以终止该流程。

  

这会确保清除任何杂散线程和未使用的单例自引用吗?

当过程终止时,这些将消失。但是,由于您不知道将会持续多长时间,请不要泄漏线程。

答案 1 :(得分:1)

我希望Android关闭整个JVM,并且不相信应用程序代码可以清除而没有错误。我很欣赏这种行为作为用户。

但是你应该在onDestroy回调中彻底清理。使用java.util.concurrent类进行简单的线程/任务管理。