`

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

阅读更多

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

 

当两个应用程序的优先级相同时,那个长时间处于较低优先级的进程会被先杀死。进程的优先级同样受进程间依赖影响,如果一个应用程序依赖于另外一个应用程序的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维护这些缓存来改善应用程序重新启动的启动时间。这些进程在资源需要的时候常常被杀死。

分享到:
评论

相关推荐

    基于优先级的进程调度实验

    在实验中,我们还学习了进程调度的基本概念,包括进程的基本状态(就绪、执行、完成)、进程控制块的结构、链表的应用等。通过这个实验,我们加深了对进程概念和进程调度过程的理解。 知识点: 1. 进程概念:进程...

    操作系统基于优先级的进程调度实验报告.doc

    PCB 中包含进程的标识符、优先级、累计占用 CPU 的时间片数、到完成还需要的时间片数、进程状态和链指针等信息。 在程序流程图中,我们使用流程图描述了实验的执行过程。首先,我们输入要创建的进程数目,然后创建...

    编写程序实现基于优先级的时间片轮转调度算法

    6. **优先级反转和死锁预防**:在优先级调度中,需要考虑优先级反转(低优先级进程持有高优先级进程所需的资源)和死锁(多个进程互相等待对方释放资源)的问题。可以通过优先级继承或资源预分配等策略来解决。 在...

    进程调度时间片轮转+优先级进程调度(操作系统课程设计)

    3. 上下文切换模拟,包括保存和恢复进程状态。 4. 系统时间模拟,监控时间片的消耗和进程的执行情况。 5. 输出调度结果,如进程执行顺序、CPU利用率等。 通过这个课程设计,你可以深入理解操作系统中的进程调度原理...

    进程调度模拟程序 课设

    在这个模拟程序中,进程被表示为PCB(Process Control Block),其中包含了关于进程的重要信息,如进程名、优先级、到达时间、需要时间、已用时间和当前状态。 `AddProcess`函数允许用户输入进程的详细信息,包括...

    进程调度模拟设计——时间片轮转、优先级法

    通过模拟设计,学生可以深入理解进程调度的功能和算法,掌握编程语言的使用,并提高自己的编程能力和问题解决能力。 在设计中,我们首先对进程调度的功能进行了分析,包括记录系统中所有进程的执行情况、选择占有...

    进程三状态转化

    "ThreeState"这个程序可能是通过模拟进程状态转换来帮助用户理解这一概念。它可能包含以下组件: 1. 图形化界面:显示进程的三种状态,通过图形元素(如按钮、进度条或图表)展示状态转换过程。 2. 控制逻辑:用户...

    进程调度模拟设计--时间片轮转、优先级法

    进程调度是操作系统中至关重要的部分,它决定了系统如何在多个并发...通过分析和优化这些模拟程序,可以深入研究如何平衡系统响应时间和资源利用率,这对理解操作系统内核的工作方式和提升系统设计能力具有重要意义。

    操作系统——PCB模拟.rar_优先级调度_优先级调度算法_控制台_进程调度 图形

    2. 可视化展示:界面可能包含一个显示所有进程状态和优先级的列表,以及可能的进度条或图表来表示CPU的使用情况。 3. 事件响应:程序需要能够响应用户的操作,如按钮点击,及时更新显示和进程调度。 总的来说,这个...

    操作系统实验三 进程调度算法实验

    在提供的代码中,程序创建了父进程和子进程,它们分别执行不同的任务并展示各自的优先级和调度器状态。当接收到特定信号(SIGINT和SIGTSTP)时,进程的优先级会相应地增加或减少。这允许观察不同调度策略下,优先级...

    Linux下的进程状态

    为了更好地管理和控制进程,Linux定义了一系列的进程状态来表示进程当前所处的不同情况。理解这些状态对于系统管理员和开发人员来说至关重要,它有助于更有效地调试程序、监控系统性能以及优化资源利用。 #### 进程...

    操作系统 进程控制 程序

    2. **进程状态转换**:进程在执行过程中可以经历多种状态,如就绪、运行、阻塞。例如,当一个进程被分配到CPU执行时,其状态从就绪变为运行;如果进程等待I/O操作完成,则会进入阻塞状态。 3. **进程同步与通信**:...

    实验三 最高优先级调度代码 .rar_pcb_优先级调度_先来先服务_进程 优先 调度

    它存储了进程的各种状态信息,如进程ID、进程状态(如就绪、运行、等待)、优先级、资源分配情况、上下文信息(如程序计数器、寄存器值)等。在实验中,你需要创建一个模拟的PCB,用于记录进程的基本信息,如到达...

    进程线程方面的应用程序

    在这个“进程线程方面的应用程序”资源中,我们有机会通过实例代码来深入学习这两个核心概念。 首先,我们要明白**进程**的基本含义。在操作系统中,进程可以被看作是一个正在执行的程序的实例。它拥有自己的内存...

    如何让一个应用程序一直在后台运行? -

    在C++ Builder和Windows SDK中,让一个应用程序在后台持续运行涉及到进程管理、窗口...通过理解和应用上述知识点,开发者可以有效地创建能在后台持续运行的C++ Builder应用程序,无论是作为独立的进程还是Windows服务。

    设置进程优先级别

    2. 资源管理:在多任务环境中,优先级管理可以帮助确保关键任务不被其他低优先级进程抢占资源。 3. 避免卡顿:当系统资源紧张时,调整某些进程的优先级可以防止系统因某个资源消耗大的进程而变得卡顿。 三、如何...

    spy++一款pc端应用程序定位属性

    这款工具在IT行业内被广泛用于软件开发、调试和性能优化,尤其对于理解应用程序的运行机制至关重要。 首先,我们要了解的是"窗口"在Windows系统中的概念。窗口是用户与应用程序交互的基本界面,每个应用程序至少有...

    011_android之 进程及其优先级别

    本教程“011_android之 进程及其优先级别”深入探讨了Android中的进程管理,以及不同进程的优先级,这对于优化应用程序性能和理解系统资源分配至关重要。 首先,Android系统中有五种进程状态,它们分别是: 1. **...

    进程调度模拟设计--优先级法、最高响应比优先调度算法

    1. **抢占式优先级调度**:如果一个较高优先级的进程就绪,它可以中断当前正在运行的较低优先级进程,立即获取CPU。 2. **非抢占式优先级调度**:一旦进程开始执行,即使有更高优先级的进程就绪,也不会被抢占,直至...

Global site tag (gtag.js) - Google Analytics