您的位置:首页 > 移动开发

第三章: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是为了他们在重启的时候的性能提升。作为必要,这些进程会被周期性的中止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: