读官方文档 activities/Processes and Application Lifecycle总结
Android中应用的进程的生命周期不由应用直接控制,而是由组成部分的的重要性来综合决定。为决定哪些进程应该在低内存时被kill,Android根据运行在进程中的组件和组件的状态综合,列出了以下重要层级:
- foreground process - 用户正在做什么所需要的进程,当进程包含以下情形:
- 运行着正在与用户交互的activity,已经执行了 onResume()
- BroadcastReceiver 的 onReceive() 方法正在执行
- 有 Service 正在执行它的回调方法onCreate(),onStart(),onDestroy()
- visible process - 用户当前知道的工作所在的进程,被kill可能会影响用户体验。以下情形:
- 正在运行着对用户可见但是不在前台的activity(即onResume()被调用)
- 运行着foregroud service,service.startForeground()
- 托管着系统正在运行的用户知道功能的特定服务,比如动态壁纸、输入法等
service process - 持有着通过startService()启动的service,尽管这些进程不对用户直接可见,但通常执行着用户关心的操作,例如后台上传或下载。Service运行了很长时间(30mins+)后重要性会被降级,其托管进程会降级到cache process。有助于避免泄露缓存或其他消耗太多RAM的 service 的长时间运行。
cache process - 系统会随时kill这些进程来释放内存。activities执行了onStop()并返回。