Android五个进程等级(转)

Android五个进程等级

  1、前台进程(Foreground process):
  用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:

  正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。
  寄宿了一个服务,该服务与一个与用户交互的活动绑定。
  有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。
  有一个BroadcastReceiver对象执行他的onReceive()方法。

  在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。

  2、可视进程(Visible process):
  没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。一个进程满足下面任何一个条件都被认为是可视的:

  寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。
  寄宿着一个服务,该服务绑定到一个可视的活动。

  一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。

  3、服务进程(Service process):是一个运行着一个用startService()方法启动的服务,并且该服务并没有落入上面2种分类。虽然服务进程没有直接关系到任何用户可见的,它们通常做用户关心的事(诸如在后台播放mp3或者从网络上下载数据),因此系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。

  4、后台进程(Background process):是一个保持着一个当前对用户不可视的活动(已经调用Activity对象的onStop()方法)(如果还有除了UI线程外其他线程在运行话,不受影响)。这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。一般地有很多后台进程运行着,因此它们保持在一个LRU(least recently used,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法LRU一样。)列表以确保最近使用最多的活动的进程最后被杀。

  5、空进程(Empty process):是一个没有保持活跃的应用程序组件的进程。保持这个进程可用的唯一原因是作为一个cache以提高下次启动组件的速度。系统进程杀死这些进程,以在进程cache和潜在的内核cache之间平衡整个系统资源。

  一个进程的排名因为其他进程依赖它而上升。一个进程服务其它进程,它的排名从不会比它服务的进程低。例如,进程A中的一个内容提供者服务进程B中的一个客户,或者进程A中的一个服务绑定到进程B中的一个组件,进程A总是被认为比进程B重要。

  因为一个服务进程排名比后台活动的进程排名高,一个活动启动一个服务来初始化一个长时间运行操作,而不是简单地衍生一个线程——特别是如果操作很可能会拖垮活动(例如出现ANR)。这方面的例子是在后台播放音乐和上传相机拍摄的图片到一个网站。使用服务保证操作至少有“服务进程”的优先级,无论活动发生什么情况。

转自:http://blog.csdn.net/chenhui1219/article/details/6848336

时间: 2024-11-05 19:38:43

Android五个进程等级(转)的相关文章

Android学习笔记—第五章 进程与线程

第五章 进程与线程 进程:一个应用程序就是一个进程 (1)进程的优先级: Foreground Process 前台进程 a. 当前用户正在操作的Activity所在的进程 b. 绑定了当前用户操作的Activity的service所在的进程 c. 通过调用了startForeground()方法提升优先级的service所在的进程 d. 正在调用onCreate().onStart().onDestory()方法的service所在的进程 e. 正在调用onReceiver()方法的Broad

Android的5个进程等级(转)

1.foreground process 正处于activity resume状态 正处于bound服务交互的状态 正处于服务在前台运行的状态(StartForeGround()被调用) Service生命周期正在被执行(onCreate(),onStart(),onDestroy()) BroadcastReceiver正在执行onReceive()方法 杀死foreground需要用户响应,因为这个安全优先级是最高的 是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内存实在无法供

Android的5个进程等级

1.foreground process 正处于activity resume状态 正处于bound服务交互的状态 正处于服务在前台运行的状态(StartForeGround()被调用) Service生命周期正在被执行(onCreate(),onStart(),onDestroy()) BroadcastReceiver正在执行onReceive()方法 杀死foreground需要用户响应,因为这个安全优先级是最高的 是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内存实在无法供

[Android Pro] Android的5个进程等级

1.foreground process 正处于activity resume状态 正处于bound服务交互的状态 正处于服务在前台运行的状态(StartForeGround()被调用) Service生命周期正在被执行(onCreate(),onStart(),onDestroy()) BroadcastReceiver正在执行onReceive()方法 杀死foreground需要用户响应,因为这个安全优先级是最高的 是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当内存实在无法供

保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ?Android.content.Context  ?android.content.ContextWrapper  ?android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service

android中的进程级别

Android中,同一个应用的所有组件在默认情况下都运行在同一个进程中,但也可以通过修改manifest文件中的android:process属性来指定该组件要运行中那个进程,也可以让不同应用的组件们运行在同一个进程中,当然这些应用要共享一个用户ID并并且有相同的数字证书. Android可能在某个时刻决定关闭一个进程,当决定要关闭那些进程的时候,系统会衡量每个进程与用户的紧密程度,这时候就跟Android中进程的级别有关了.像一个具有可见的activity的进程要比那些activity都是不可

Android学习:进程以及优先级

1:Android中的进程process 当一个android应用启动,系统会启动一个进程和一个主线程来运行这个应用. Android系统会尽力保持这个进程的稳定和安全. 但是,在某些特殊情况下,总会移除旧的进程来回收内存,用于新的或者重要的进程. 当要回收内存的时候,系统要决定那些进程应该保留,那些进程应该杀掉. 因此,在android进程管理中,设置了进程的优先级别.优先级别取决于进程内运行的程序以及程序的状态. 那么.系统需要回收内存时,就杀掉优先级低的进程,这就是android系统的策略

android里面的进程回收机制[转载]

http://blog.sina.com.cn/s/blog_40d475e901012jgt.html Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收.由此带来三个问题:l 回收规则: 什么时候回收与回收哪一个l 避免误杀: 如何阻止被回收l 数据恢复与保存: 被回收了怎么办 Android将进程分为6个等级,它们按优先级顺序由高到低依次是:1.前台进程( FOREGROUND_APP)2.可视进程(VISIBLE_APP )3. 次要服务进程(SEC

Android任务、进程和线程

任务.进程和线程    关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的.Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员的理解难度,帮助大家更好的进行开发和配置. 任务    在SDK中关于Task(guide/topi