这似乎没有很好的记录,或者我错过了它,所以在我自己进行一系列测试之前,我想知道是否有人已经知道其中一些问题的答案。
首先,当我说“应用程序”时,我指的是扩展 Application
类。 http://developer.android.com/reference/android/app/Application.html
我的问题如下,有些是相关的。
当用户离开应用程序中的 Activity 并转到另一个应用程序的 Activity 时,应用程序是否也会以某种方式暂停,即使它没有 onPause()?还是在所有 Activity 都被销毁之前,它会继续存在而不暂停?
应用程序何时停止?当它的所有 Activity 都被销毁时?
是否有可能其中一个应用程序 Activity 可以在没有应用程序实例的情况下运行,或者如果其中一个 Activity 存在,应用程序类是否会一直存在?
如果有某个进程在Application上运行,并且它的Activity都暂停了,那个进程会继续运行吗?
应用程序是否以任何方式受到轮换的影响,还是轮换仅改变 Activity ?
谢谢
最佳答案
如您所说,应用程序没有 onPause,因此应用程序不会发生任何事情。当在您的 Activity 中调用 onPause 时,不会发生任何特殊情况,您的 Activity 会继续运行并可以做任何它想做的事情,包括运行新线程、计时器可以关闭等等。
我相信您要问的是:应用程序何时被销毁以及应用程序中的 onTerminate 方法何时被调用?答案很难确定并且取决于系统,当所有 Activity 都被调用 onDestroyed 时不一定会发生。事实上,即使在调用 onDestroy 时,您的 Activity 也不一定会被垃圾回收。当系统内存不足时,您的应用程序所在的进程可能会被终止,这意味着您的应用程序将消失; onTerminate 可能会或可能不会被调用。那时所有的 Activity 、服务等也被杀死。
Application 总是首先实例化,一个 Activity 必须有一个关联的 Application,就像您在 AndroidManifest.xml 中定义它的方式一样。
Android 中的进程从不暂停,onPause 方法除了告诉您暂停应用程序中的内容外,实际上并没有做任何其他事情。除此之外,该进程一直在运行,您的线程一直在运行,甚至主线程也使用 BroadcastReceiver 接收 Intent。
应用程序在应用程序的 onConfigurationChanged() 中获取旋转回调。我不确定您是否可以禁用它,因为 AndroidManifest.xml 中的应用程序标签不支持 configChanges 属性。
与应用程序的一个很好的比较是任何类中的静态字段。只要进程不被破坏,静态字段就会存在,就像应用程序一样。所有 Activity 、服务等都可以访问静态字段(假设静态字段是公共(public)的),就像您的应用程序一样。
祝你好运! 雅各布
关于android - Android 的 Activity 生命周期如何与整个应用程序相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982874/