Android 优先级和应用程序生命周期

来源:互联网 发布:信用卡淘宝支付限额 编辑:程序博客网 时间:2024/06/05 02:33

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

目录

  • Android 理解应用程序的优先级和进程状态
    • 目录
    • 组成应用程序的组件
    • Android应用程序生命周期

回收资源的时候,进程被终止的顺序是由他们的应用程序的优先级所决定的。一个应用程序的优先级等同于它的优先级最高的组件的优先级。

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

注:所有的Android应用程序都会保持在内存中运行,直到系统需要释放它的资源供其它应用程序使用时为止

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


组成应用程序的组件

  • Active进程 Active(前台)的进程是指那些有组件正和用户交互的应用程序的进程。这些都是Android尝试通过回收其他应用程序的资源来使其保持响应的进程。这些进程非常少,只有到最后的关头才会终止这些进程。
    Active的进程包括:

    • 处于活动状态的Activity,也就是说他们位于前台并对用户事件进行相应
    • 正在执行onReceive事件处理的Broadcast Receiver
    • 正在执行onStart、onCreate或者obDestroy事件处理程序的Service
    • 正在运行、且已被标记为在前台运行的Service
  • 可见程序 可见但是非活动的进程是指那些驻留“可见”Activity的进程。顾名思义,可见的Activity能被用户看到,但是他们并不在前台运行或者能对用户时间做出反应。例如,当一个Activity被部分遮挡时(被一个非全屏或者透明的Activity遮挡)就会出现这种情况。这些进程的数量也很少,只有在资源极度匮乏的环境下,为保证Activity进程继续执行时才会终止这些进程。

  • 启动Service进程 已经启动的Service的进程。因为后台Service没有直接和用户交互,所以他的优先级要比可见的Activity或者前台Service低一些。但是他们任然被认为是前台(foreground)进程,除非活动或者可见进程需要资源,否则不会终止它们。当系统终止一个运行的Service后,会在资源可用时尝试重新启动Service(除非告诉系统不用启动)。

  • 后台进程 不可见、并且没有任何正在运行的Service的Activity的进程。通常会有大量的后台进程,Android将使用“”最后一个被看到吗第一个被终止(last-seen-first-kelled)的方式来终止他们,从而为前台进程提供资源。

  • 空进程 为提高系统整体性能,Android经常在应用程序的生存期结束之后任然吧把他们呢保存在内存中。Android通过维护这个缓存来减少应用程序被再次启动时的启动时间。通常这些进程会根据需要被定期终止。

Android应用程序生命周期

  • 与大部分传统的应用程序平台不同,Android应用程序不能控制它们自己的生命周期。相反,应用程序组件必须监听应用程序变化病坐车适当的反应,而且特别要注意为随时被终止做好准备。

  • 默认状态下,每个Android应用程序都是通过它们自己的进程运行时,没一个进程都运行在独立的Dalvik实例中。每一个应用程序的内存和进程管理收拾有运行时专门进行处理的。

注:通过Manifest内对每一个受到影响的应用程序组件节点适应android:process属性,可以使同一个应用程序的组件运行在不同的进程中,或者让多个应用程序共享同一个进程。

  • Android主动管理他的资源,他会采取任何措施来保证稳定流畅的用户体验。这就意味者在必要的时候,进程(以及他们的应用程序)有时候会在没有警告的情况下被终止,这样久远可以为高优先级的应用程序释放资源。
1 0
原创粉丝点击