WEB开发网
开发学院手机开发Android 开发 Android 开发之组件生命周期 阅读

Android 开发之组件生命周期

 2010-05-08 18:18:00 来源:WEB开发网   
核心提示:Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程,Android 开发之组件生命周期,为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这些组件的状态,如果一个活动执行正确地执行它的生命周期方法,且捕获它当前的状态,重要性

Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程。为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这些组件的状态。重要性最低的进程首先被杀死,然后是次低,以此类推。总共有5 个层次等级。下列清单按重要性顺序列出:

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

它正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。

它寄宿了一个服务,该服务与一个与用户交互的活动绑定。

它有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。

它有一个BroadcastReceiver对象执行他的onReceive()方法。

在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。一般来说,就在那时,设备达到一个内存???状态,因此杀掉某些前台进程以保持用户界面响应。

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

它寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发送在,如果一个前台活动是一个对话框且运行之前的活动在其后面仍可视。

它寄宿着一个服务,该服务绑定到一个可视的活动。

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

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

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

1 2  下一页

Tags:Android 开发 组件

编辑录入:coldstar [复制链接] [打 印]
赞助商链接