android - Android 的 Activity 生命周期如何与整个应用程序相关联?

标签 android android-activity lifecycle

这似乎没有很好的记录,或者我错过了它,所以在我自己进行一系列测试之前,我想知道是否有人已经知道其中一些问题的答案。

首先,当我说“应用程序”时,我指的是扩展 Application 类。 http://developer.android.com/reference/android/app/Application.html

我的问题如下,有些是相关的。

  1. 当用户离开应用程序中的 Activity 并转到另一个应用程序的 Activity 时,应用程序是否也会以某种方式暂停,即使它没有 onPause()?还是在所有 Activity 都被销毁之前,它会继续存在而不暂停?

  2. 应用程序何时停止?当它的所有 Activity 都被销毁时?

  3. 是否有可能其中一个应用程序 Activity 可以在没有应用程序实例的情况下运行,或者如果其中一个 Activity 存在,应用程序类是否会一直存在?

  4. 如果有某个进程在Application上运行,并且它的Activity都暂停了,那个进程会继续运行吗?

  5. 应用程序是否以任何方式受到轮换的影响,还是轮换仅改变 Activity ?

谢谢

最佳答案

  1. 如您所说,应用程序没有 onPause,因此应用程序不会发生任何事情。当在您的 Activity 中调用 onPause 时,不会发生任何特殊情况,您的 Activity 会继续运行并可以做任何它想做的事情,包括运行新线程、计时器可以关闭等等。

  2. 我相信您要问的是:应用程序何时被销毁以及应用程序中的 onTerminate 方法何时被调用?答案很难确定并且取决于系统,当所有 Activity 都被调用 onDestroyed 时不一定会发生。事实上,即使在调用 onDestroy 时,您的 Activity 也不一定会被垃圾回收。当系统内存不足时,您的应用程序所在的进程可能会被终止,这意味着您的应用程序将消失; onTerminate 可能会或可能不会被调用。那时所有的 Activity 、服务等也被杀死。

  3. Application 总是首先实例化,一个 Activity 必须有一个关联的 Application,就像您在 AndroidManifest.xml 中定义它的方式一样。

  4. Android 中的进程从不暂停,onPause 方法除了告诉您暂停应用程序中的内容外,实际上并没有做任何其他事情。除此之外,该进程一直在运行,您的线程一直在运行,甚至主线程也使用 BroadcastReceiver 接收 Intent。

  5. 应用程序在应用程序的 onConfigurationChanged() 中获取旋转回调。我不确定您是否可以禁用它,因为 AndroidManifest.xml 中的应用程序标签不支持 configChanges 属性。

与应用程序的一个很好的比较是任何类中的静态字段。只要进程不被破坏,静态字段就会存在,就像应用程序一样。所有 Activity 、服务等都可以访问静态字段(假设静态字段是公共(public)的),就像您的应用程序一样。

祝你好运! 雅各布

关于android - Android 的 Activity 生命周期如何与整个应用程序相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982874/

相关文章:

java - ViewPager 中的 Espresso RecyclerView

java - 带有俄语网址的 ImageView

java - 如何在方向更改时保存 ArrayLists 位置

android - 如何访问(迭代?)另一个类中的 ArrayList/Hashmap?

android - 更改屏幕方向后 TextView 内容丢失

java-me - 为什么在 Java ME 应用程序中使用 startApp() 而不是构造函数?

javascript - React Router 在重定向到具有不同 slug 的同一页面时触发重新加载/重新安装组件

android - 为什么这些按钮的尺寸没有重量?

android - 将数据发送到父 Activity onBackPressed

java - Eclipse Android SDK : Can't access layouts after adding 2nd activity