Android 的应用程序的优先级和进程状态

 回收资源的时候,进程被终止的顺序是由它们的承载(hosted)应用程序的优先级所决定的。一个应用程序的优先级等同于它优先级最高的组件的优先级。(一个应用程序的优先级是根据 组件的优先级进行判断的(组件有 活动(Activity),后台(Service),内容提供者(ContentProvider),Intent(内容通信协议),广播(BroadcastReceiver)))

当两个应用程序有相同的优先级时,处于较低优先级且运行时间最长的进程将会首先被终止。
进程的优先级也受到进程间依赖性的影响,如果一个应用程序依赖于第二个应用程序所提供的服务或者内容提供器,那么第二个应用程序至少会拥有与它所支持的这个应用程序相同的优先级。

通过合理地组织应用程序来保证它具有能够正常工作的适当的优先级是非常重要的。如果没有做到这一点,则应用程序就可能在某些比较重要的时刻被终止。

应用程序优先级树



 

1.活动进程
  活动(前台)的进程是指那些有组件正和用户进行交互的承载应用程序的进程。这些都是Android尝试通过回收资源来保持效应的进程。这些进程的数量非常少,只有到最后的关头才会终止这些进程。
  活动进程包括:
 · 处于“活动”状态的Activity(活动),也就是说,它们位于前台对用户事件进行响应。
        · 正在执行onReceive 事件处理函数的活动、服务或者广播接收器。
 · 正在执行onStart、onCreate或者onDestroy事件处理函数的服务。
2.可见进程
  可见、但是非活动的进程,是指那些承载“可见”活动的进程。可见的活动能被用户看到,但是它们并不在前台运行或者能对用户事件做出反应。eg:当一个活动被部分遮挡时(被一个非全屏或者半透明的活动遮挡)就会出现这种情况。这些进程的数量也很少,只有在资源极度缺乏的环境下,为了保证活动进程继续执行时才会终止这些进程。
3.启动服务进程
  已经启动的承载服务进程。服务支持在没有可见界面的情况下,仍然能够继续不间断的处理。因为服务进程没有直接和用户交互,所以它们的优先级要比可见进程低一些。但是它们仍然被认为是前台进程,直到活动或者可见的进程需要资源的时候,才会终止它们。
4.后台进程
  那些承载不可见活动的,并且也没有已经启动的任何服务的进程即为后台进程。通常会有大量的后台进程,Android将使用“最后一个被看到,第一个被杀死”的方式来终止它们,从而为前台进程提供资源。
5.空进程
  为了提高系统整体性能,Android经常在应用程序的生存期结束之后仍然把它们保存在内存中。Android通过维护这个缓存来减少应用程序被再次启动时的启动时间。通常这些进程会按照要求被定期终止。

活动状态:



 

扫描二维码关注公众号,回复: 1222137 查看本文章

猜你喜欢

转载自zyzzsky.iteye.com/blog/1969630