我仍在尝试了解Android应用的应用生命周期。我让我的应用程序在夜晚和早上在后台运行,当我再次点击应用程序图标时,会出现启动画面。从日志文件中,我的Android应用程序重新启动。然而它仍然会显示昨晚的旧活动。奇怪的是,我只能在我的手机上重现这一点,而不是在另一个开发者的手机上重现这一点,我找不到任何应用程序在一夜之间做了什么特别的事情:
任何人在Android上都有关于应用程序生命周期(不是活动生命周期)的良好链接吗?
答案 0 :(得分:1)
应用程序由一个或多个组件组成:Activity,Service,BroadcastReceiver和ContentProvider。其中每个都作为您的应用程序的一部分运行,所有这些都在同一个过程中。此外,这些组件的入口点(onCreate,onStart等)中的每一个都在应用程序进程的主(或UI)线程上运行。当您的应用程序进入后台时,该进程将被缓存并随时可用。但是,由框架和内核来决定对此的限制。
因此,为什么你的应用程序在一台设备上而不是另一台设备被销毁的原因在于:它取决于设备以及设备上运行的内容。在Android框架下运行的Linux内核被告知内存资源正在使用什么进程“限制”,并且当给定进程属于某种类型时,ActivityManager框架组件通知内核。例如,只有一个Activity的简单应用程序会获得一定的限制和优先级(从进程杀手的角度来看,而不是调度程序)。另一个使用Activity和一个标记为前台服务的服务的应用程序获得了不同的优先级,使得“更难”杀死它。答案中的“设备上正在运行的内容”就是:每个设备上安装和激活的其他APK。您的设备可能受内存限制,或者您可能有其他应用程序,其中前台服务经常尝试访问网络等。因此,Activity / Service / BroadcastReceiver / ContentProvider生命周期很重要,因为它决定了应用程序的整个过程何时被销毁。 / p>