Android五个进程等级
1、前台进程(Foreground process):
用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:
正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。
寄宿了一个服务,该服务与一个与用户交互的活动绑定。
有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。
有一个BroadcastReceiver对象执行他的onReceive()方法。
在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。
2、可视进程(Visible process):
没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。一个进程满足下面任何一个条件都被认为是可视的:
寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。
寄宿着一个服务,该服务绑定到一个可视的活动。
一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。
3、服务进程(Service process):是一个运行着一个用startService()方法启动的服务,并且该服务并没有落入上面2种分类。虽然服务进程没有直接关系到任何用户可见的,它们通常做用户关心的事(诸如在后台播放mp3或者从网络上下载数据),因此系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。
4、后台进程(Background process):是一个保持着一个当前对用户不可视的活动(已经调用Activity对象的onStop()方法)(如果还有除了UI线程外其他线程在运行话,不受影响)。这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。一般地有很多后台进程运行着,因此它们保持在一个LRU(least recently used,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法LRU一样。)列表以确保最近使用最多的活动的进程最后被杀。
5、空进程(Empty process):是一个没有保持活跃的应用程序组件的进程。保持这个进程可用的唯一原因是作为一个cache以提高下次启动组件的速度。系统进程杀死这些进程,以在进程cache和潜在的内核cache之间平衡整个系统资源。
一个进程的排名因为其他进程依赖它而上升。一个进程服务其它进程,它的排名从不会比它服务的进程低。例如,进程A中的一个内容提供者服务进程B 中的一个客户,或者进程A中的一个服务绑定到进程B中的一个组件,进程A总是被认为比进程B重要。
因为一个服务进程排名比后台活动的进程排名高,一个活动启动一个服务来初始化一个长时间运行操作,而不是简单地衍生一个线程——特别是如果操作很可能会拖垮活动(例如出现ANR)。这方面的例子是在后台播放音乐和上传相机拍摄的图片到一个网站。使用服务保证操作至少有“服务进程”的优先级,无论活动发生什么情况。
分享到:
相关推荐
首先,理解Android进程的生命周期和优先级至关重要。Android系统根据各个应用组件所处的进程的重要性,将其分为多个等级,包括前台进程、可见进程、重要服务进程、后台进程和服务进程。优先级越高,系统在内存不足时...
Android将进程分为五个等级,按重要性排序: - **前台进程**:当前用户正在直接交互的进程,如运行中的Activity和前台Service,系统极少见会终止这类进程。 - **可见进程**:虽不处于前台,但对用户可见,如暂停的...
1. **进程等级**:Android系统根据进程与用户交互的重要性将其分为五级:前台进程、可见进程、服务进程、后台进程和空进程。保活策略主要针对服务进程和后台进程,因为它们较容易被系统回收。 2. **服务(Service)...
这个类提供了关于当前正在运行的应用进程的详细信息,包括进程的importance等级、进程名以及关联的包名等。你可以通过注册`BroadcastReceiver`监听`ACTION_TASK_RESUMED`和`ACTION_TASK_PAUSED`广播来间接获取进程...
1. **进程优先级**:根据进程的类型和当前状态,Android会赋予每个进程不同的优先级。 2. **生命周期管理**:进程的生命周期管理对于内存管理非常重要。例如,当内存紧张时,Android会优先终止那些处于非活跃状态的...
`RunningAppProcessInfo`对象包含了关于正在运行的应用进程的信息,如进程ID、重要性等级和包名等。 3. **解析数据**:在获取到`RunningAppProcessInfo`列表后,你可以遍历它来获取每个应用的详细信息,比如找出...
SQLite是一个开源的关系型数据库,它不需要单独的服务器进程,并且可以嵌入到应用程序中。在Android中,每个应用都有自己的SQLite数据库,可以通过`SQLiteOpenHelper`类来创建和管理数据库,以及通过`SQLiteDatabase...
Android 系统中的进程优先级从高到低分为多个等级,这决定了应用的执行效率和资源分配。在 Android 应用中,主要的四大组件是 Activity、Service、BroadcastReceiver 和 ContentProvider。 Activity 是应用程序的...
2. Android进程生命周期和状态转换。 3. 进程优先级的分类及其影响因素。 4. 如何通过编程方式改变进程优先级。 5. OOM Killer的工作原理和内存管理策略。 6. JobScheduler和WorkManager的使用方法及其优势。 理解...
Android的日志系统是一个关键的开发工具,用于跟踪应用程序的运行状态,帮助开发者诊断问题。本文将深入探讨Android中log(写入、读取)的代码流程,重点分析C/C++层如何使用log系统,并解析logcat工具的使用。 ###...
进程的重要性分为五个等级:前台进程、可见进程、服务进程、后台进程和空进程。这五个级别的划分基于进程内组件的类型和状态,用于优化内存管理。例如,前台进程是用户当前正在使用的,系统会尽可能保留;而后台进程...
在移动设备日益普及的今天,教育领域的数字化进程也愈发加速,基于Android平台的模拟考试系统成为了教学辅助的重要工具。本系统采用Java编程语言,利用Apache开源技术,实现了包括单选题、多选题、判断题在内的全面...
通过对"跳动的心"这个游戏源代码的学习和分析,开发者可以深入了解Android游戏开发的各个方面,包括图形绘制、用户交互、音频处理、性能优化等,这对于提升个人技能和开发新的游戏项目大有裨益。同时,源码中的实践...
因此,了解如何提高Service的优先级是Android开发中的一个重要知识点。 Service的优先级分为前台(foreground)和后台(background)。默认情况下,Service被创建时处于后台状态,其优先级较低。当Service处于后台...
Root是获取Android设备最高等级权限的过程,这样用户就可以完全控制设备,包括修改系统文件、删除预装应用、提升设备性能等。对于取证人员来说,Root设备同样可以提供对设备文件系统的完全访问权限,从而更深入地...
如果当前空闲内存低于某一个阈值,就以对应的优先级等级为基准,遍历所有进程,寻找符合条件的进程进行释放操作。 ##### 3. 杀死进程的方式 LMK通过向目标进程发送不可忽略或阻塞的SIGKILL信号来强制终止进程。这...
- **Android SDK**:包含了开发Android应用所需的所有工具和库,包括Java Development Kit (JDK) 和Android API等级库。 3. **Android编程语言** - **Java**:Android早期主要使用的编程语言,使用面向对象的特性...
5. **ACCESS_MOCK_LOCATION**:用于测试,允许创建模拟定位提供者,可以生成假的地理位置数据。 6. **ACCESS_NETWORK_STATE**:应用可以查看网络连接的状态,判断是否已连接到互联网。 7. **ACCESS_SURFACE_...
在Android系统中,ActivityManager是Android提供的一个关键组件,它主要负责管理应用程序的生命周期和全局状态。本篇文章将深入探讨如何利用ActivityManager来获取正在运行的应用程序信息,这是Android开发中的一个...