第三章:Creating Applications and activities-(五)理解应用的优先级以及进程状态
2016-07-29 00:00
288 查看
1.1 理解应用的优先级以及进程状态
为了释放资源而去杀掉进程的顺序取决于进程所属应用的优先级,一个应用的优先级取决于它最高优先级的组件。
如果两个应用拥有同样的优先级,那么那个处于这个优先级时间较长的应用会被先终止程序。进程的优先级也被内部进程的依赖关系所影响。如果一个应用依赖于另外一个应用的Service或者Content Provider,那么这个被依赖的应用会比那个被支持的应用的优先级要高。
备注:所有的Android应用会一直保持运行在内存中,直到系统需要资源去运行其他应用
图 3-3 展示了应用被终止的优先级树形结构
正确构架你的应用并确保他在运行时优先级合适是非常重要的。如果做的不好,你的应用极可能在处理一些重要事情的时候被杀掉。
图3-3的列表显示的构成应用的组件是如何确定他当前的状态:
图 3-3
1.1.1 Active processes
Active processes拥有组件与用户交互。Android会通过回收资源去保持这些进程的快速响应。一般情况下这种进程很少,并且他们只有在被要求终止的时候才会被终止。
Active processes包括:
· Activities在“active”状态。就是说,这些Activities在前端响应用户事件
· Broadcast Receivers 在执行 onReceive 事件处理
· Services 在执行onStart,onCreate,或者onDestory 事件处理
· 运行的服务被调到前端
1.1.2 Visible processes
可视化但是不活跃的进程就是指那些能看得到的Activities。就像名字所说的那样,这些Activities是能看得到的,但是他们不在前天或者说不响应用户的事件。这种进程不多,他们只有在环境极其糟糕的情况下,才会被终止以保证活跃进程的执行。
1.1.3 Started Service Processes
进程服务已经被启动了。Services通过一个不可见的接口去支持服务的运行。因为后台程序不直接和用户交互。他们的优先级比可视化的活动要略微低一些。他们仍旧被视为前端进程,除非为了可视化的前端进程运行的资源需要,否则一般不会被中止。
1.1.4 Background Processes
这些进程是不可见的,并且没有任何运行中的服务。如果有大量的这类服务,Android会本着last-seen-first-killed的原则中止程序,以会获取资源支持前端进程执行。
1.1.5 Empty Processes
为了提升系统性能,Android会经常在进程生命周期结束后重新获取应用到进程中。Android去维护这些cache是为了他们在重启的时候的性能提升。作为必要,这些进程会被周期性的中止。
为了释放资源而去杀掉进程的顺序取决于进程所属应用的优先级,一个应用的优先级取决于它最高优先级的组件。
如果两个应用拥有同样的优先级,那么那个处于这个优先级时间较长的应用会被先终止程序。进程的优先级也被内部进程的依赖关系所影响。如果一个应用依赖于另外一个应用的Service或者Content Provider,那么这个被依赖的应用会比那个被支持的应用的优先级要高。
备注:所有的Android应用会一直保持运行在内存中,直到系统需要资源去运行其他应用
图 3-3 展示了应用被终止的优先级树形结构
正确构架你的应用并确保他在运行时优先级合适是非常重要的。如果做的不好,你的应用极可能在处理一些重要事情的时候被杀掉。
图3-3的列表显示的构成应用的组件是如何确定他当前的状态:
图 3-3
1.1.1 Active processes
Active processes拥有组件与用户交互。Android会通过回收资源去保持这些进程的快速响应。一般情况下这种进程很少,并且他们只有在被要求终止的时候才会被终止。
Active processes包括:
· Activities在“active”状态。就是说,这些Activities在前端响应用户事件
· Broadcast Receivers 在执行 onReceive 事件处理
· Services 在执行onStart,onCreate,或者onDestory 事件处理
· 运行的服务被调到前端
1.1.2 Visible processes
可视化但是不活跃的进程就是指那些能看得到的Activities。就像名字所说的那样,这些Activities是能看得到的,但是他们不在前天或者说不响应用户的事件。这种进程不多,他们只有在环境极其糟糕的情况下,才会被终止以保证活跃进程的执行。
1.1.3 Started Service Processes
进程服务已经被启动了。Services通过一个不可见的接口去支持服务的运行。因为后台程序不直接和用户交互。他们的优先级比可视化的活动要略微低一些。他们仍旧被视为前端进程,除非为了可视化的前端进程运行的资源需要,否则一般不会被中止。
1.1.4 Background Processes
这些进程是不可见的,并且没有任何运行中的服务。如果有大量的这类服务,Android会本着last-seen-first-killed的原则中止程序,以会获取资源支持前端进程执行。
1.1.5 Empty Processes
为了提升系统性能,Android会经常在进程生命周期结束后重新获取应用到进程中。Android去维护这些cache是为了他们在重启的时候的性能提升。作为必要,这些进程会被周期性的中止。
相关文章推荐
- 第三章:Creating Applications and activities-(一)什么组成了一个Android应用
- 第一章:hello,Android
- android apk的反编译
- 第三章:Creating Applications and activities-(七)介绍Android应用的class
- Cocos2d-x/Cocos2d-js编译64位so库中遇到的问题
- 小肚皮App招聘iOS、Android开发工程师
- addChildViewController与viewWillAppear、viewDidAppear关系说明
- Android通过Gradle发布多渠道版本遇到的Gradle版本问题解决
- android开发中遇到unknownhostException
- 第三章:Creating Applications and activities-(二)介绍应用的Manifest
- 如何查看android的avd中的sqlite数据库的表
- 第二章:Android,Getting Start(一)
- 第三章:Creating Applications and activities-概述
- 第三章:Creating Applications and activities-(六)外部资源
- android中使用gridview显示文本内容
- 第三章:Creating Applications and activities-(八)深入了解Android的Activities及本章总结
- 第二章:Android,Getting start(二)
- android开发的异步任务须知
- android中将复杂json对象进行数据转换
- 进程控制(Note for apue and csapp)