- 与windows平台不同,Android应用程序不能控制自己的生命周期,应用程序组件必须监听应用程序的状态的变化并作出适当反应,特别要注意为随时被终止做好准备
- 默认情况下,每个Android应用程序都是通过他们自己的进程运行,每个进程都运行在独立的Dalvik实例中,每个应用程序的内存和进程管理都是由运行时进行专门处理的。通过使用android:process属性可以使同一个应用程序组件运行在不同的进程中,或者让多个应用程序共享一个进程
- 回收资源时,进程被终止的顺序是由它们的应用程序优先级决定的,一个应用程序的优先级等同于它的优先级最高的组件的优先级。
- 两个应用程序拥有相同的优先级时,在较低优先级状态运行时间最长的进程首先被终止。进程的优先级也收进程间依赖性的影响,如果一个应用程序依赖于第二个应用程序提供的Service或者ContentProvider,那么第二个应用程序至少会拥有与它所支持的这个应用程序相同的优先级
- 活动进程:有组件正在与用户进行交互的应用程序的进程,包括:
- 处于活动状态的Activity,它们位于前台并对用户事件进行响应
- 正在执行onReceiver事件处理程序的Broadcast Receiver
- 正在执行onStart,onCreate或者onDestroy事件处理程序的Service
- 正在运行且已被标记为前台运行的service
- 可见进程:可见但非活动的进程是指那些驻留“可见Activity”的进程,例如,进程的Activity组件被部分遮挡时
- 启动服务进程:已经启动的service的进程,系统终止一个运行的service后,会在资源可用时尝试重新启动Service,除非告诉系统不要这么做
- 后台进程:不可见,并且没有任何正在运行的service的activity的进程
- 空进程:为了提高系统整体性能,Android经常在应用程序的生存周期结束之后仍然把他们保存在内存中,Android通过维护这个缓存来减少应用程序被再次启动的启动时间,通常这些进程会根据需要被定期终止