`

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

阅读更多

杀死哪个进程来回收资源由进程中的应用程序的优先级决定的。应用程序的优先级与它的组件的最高优先级相同。

 

当两个应用程序的优先级相同时,那个长时间处于较低优先级的进程会被先杀死。进程的优先级同样受进程间依赖影响,如果一个应用程序依赖于另外一个应用程序的ServiceContent Provider的话,那么,提供服务的应用程序至少和接受服务的应用程序一样高的优先级。

 

所有的应用程序在内存里运行,直到系统需要它的资源来分配给其他的应用程序。

 

3-3显示了优先级树,用来决定应用程序被终止的顺序。

 

正确地构建应用程序来保证它的优先级适合它做的事情是很重要的。如果你不这么做,你的应用程序在某些重要时期可能会被杀死。

 

下面的列表详细地描述了图3-3中显示的应用程序的状态,解释了怎样由组件决定状态:

 

Active Process

 Active (前台) process是进程中依附的应用程序包含当前与用户交互的组件。这些是Android通过回收资源来极力保护持续响应性的进程。一般,极少拥有像这样的进程,它们最后才被杀死。

 

Active process包括:

处于“active”状态的Activity,它们运行在前台来响应用户的事件。在这章中,你将会看到更多关于Activity状态的细节。

Activity, Service, 或者正在执行onReceive事件处理函数的Broadcast Receiver

正在执行onStartonCreateOnDestroy事件处理函数的Service

 

Visible Process

可见但不活动的进程是那些拥有“可见”Activity的进程。由名字想到的,“可见”Activity是那些在屏幕上可见,但不是在前台或不响应用户事件的Activity。这种情况发生在当一个Activity被部分遮盖的时候(被一个非全屏或者透明的Activity)。一般,也极少拥有可见的进程,它们只在极端的情况被杀死来保证Active Process的运行。

 

Started Service Process

进程中依附着已经启动的ServiceService以动态的方式持续运行但没有可见的界面。因为Service不直接和用户交互,它们拥有比visible Process较低的优先级。它们还是可以被认为是前台进程,不会被杀死,直到资源被active/visible Process需求。你将会在第8章学习到Service

 

Background Process

进程中依附的Activity不可见和进程中没有任何启动的Service,这些进程都可以看作是后台进程。在系统中,拥有大量的后台进程,并且Android按照后看见先杀死的原则来杀死后台进程来获取资源给前台进程。

 

Empty Process

为了改善整个系统的性能,Android经常在内存中保留那些已经走完生命周期的应用程序。Android维护这些缓存来改善应用程序重新启动的启动时间。这些进程在资源需要的时候常常被杀死。

分享到:
评论

相关推荐

    操作系统课程实验.rar

    (1) 设计一个模块,要求列出系统中所有内核线程的程序名、PID 号、进程状态及 进程优先级。 (2) 设计一个带参数的模块,其参数为某个进程的 PID 号,该模块的功能是列出该 进程的家族信息,包括父进程、兄弟进程和...

    操作系统 进程调度

    目的是理解进程调度算法及其应用。 1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现。 3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察...

    进程调度的设计与分析实验报告

    综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深理解...

    进程调度的设计与实现

    1、 综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深...

    进程调度设计与实现

    1、 综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。 2、 加深理解操作系统进程调度的过程。 3、 加深...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    第12章 应用服务器的实现 12.1 创建应用服务器的实例 12.2 状态区编程 12.3 动态数据库的连接 12.4 远程数据模块的建立 第13章 客户端应用程序的设计 13.1 客户端应用程序系统流程和系统功能 13.1.1 系统流程 13.1.2...

    Android高级编程 part1

     3.5 理解应用程序的优先级和进程状态  3.6 分离资源  3.6.1 创建资源  3.6.2 使用资源  3.6.3 To-DoList资源示例  3.6.4 为不同的语言和硬件创建资源  3.6.5 运行时配置更改  3.7 深入探讨Android活动  ...

    Android高级编程 part2

     3.5 理解应用程序的优先级和进程状态  3.6 分离资源  3.6.1 创建资源  3.6.2 使用资源  3.6.3 To-DoList资源示例  3.6.4 为不同的语言和硬件创建资源  3.6.5 运行时配置更改  3.7 深入探讨Android活动  ...

    Android高级编程.pdf

    3.5 理解应用程序的优先级和进程状态 3.6 分离资源 3.6.1 创建资源 3.6.2 使用资源 3.6.3 To-DoList资源示例 3.6.4 为不同的语言和硬件创建资源 3.6.5 运行时配置更改 3.7 深入探讨Android活动 3.7.1 创建一个活动 ...

    Android高级编程--源代码

    3.5 理解应用程序的优先级和进程状态 49 3.6 分离资源 50 3.6.1 创建资源 50 3.6.2 使用资源 57 3.6.3 To-Do List资源示例 60 3.6.4 为不同的语言和硬件创建资源 61 3.6.5 运行时配置更改 62 3.7 深入探讨...

    《Android高级编程》

    2.5 小结 第3章 创建应用程序和活动 3.1 Android应用程序的组成部分 3.2 程序清单简介 3.3 使用清单编辑器 3.4 Android应用程序生命周期 3.5 理解应用程序的优先级和进程状态 3.6 分离资源 3.6.1 创建资源 3.6.2 ...

    Java程序设计案例教程-第8章-多线程编程.pptx

    在UNIX操作系统中,每个应用程序的执行都在操作系统内核中登记一个进程标志,操作系统根据分配的标志对应用程序的执行进行调度和系统资源分配。每个进程都有自己的内存单元,进程之间是互相独立的,一个进程一般不...

    Delphi深度编程技术

    13.1 客户端应用程序系统流程和系统功能 13.1.1 系统流程 13.1.2 系统功能 13.2 构建客户端应用程序框架 第14章 动态连接应用服务器的实现 第15章 通用权限管理模块的设计 15.1 系统登录的设计 15.2 权限...

    操作系统重点

     系统调用是操作系统内核与用户程序、应用程序之间的接口。在UNIX/Linux系统,系统调用以C函数的形式出现。 第2章 进程管理  考核学生对进程定义、进程的状态及其转换、进程的组成、竞争条件和临界区、进程的同步...

    Delphi5开发人员指南

    第4章 应用程序框架和设计 79 4.1 理解Delphi环境和项目的体系结构 79 4.2 构成Delphi 5项目的文件 79 4.2.1 项目文件 80 4.2.2 单元文件 80 4.2.3 窗体文件 80 4.2.4 资源文件 81 4.2.5 项目选项及桌面设置文件 81 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    是帮助读者深入探索和掌握公共语言运行时、C#和.NET开发的重要参考,同时也是帮助开发人员构建任何一种应用程序(如Microsoft Silverlight、ASP.NET、Windows Prensentation Foundation、Web服务和控制台应用程序)的...

Global site tag (gtag.js) - Google Analytics