`
Kinphoo
  • 浏览: 9231 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android五个进程等级

阅读更多
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进程的生命周期和优先级至关重要。Android系统根据各个应用组件所处的进程的重要性,将其分为多个等级,包括前台进程、可见进程、重要服务进程、后台进程和服务进程。优先级越高,系统在内存不足时...

    【腾讯Bugly干货分享】Android 进程保活招式大全1

    Android将进程分为五个等级,按重要性排序: - **前台进程**:当前用户正在直接交互的进程,如运行中的Activity和前台Service,系统极少见会终止这类进程。 - **可见进程**:虽不处于前台,但对用户可见,如暂停的...

    android进程保活

    1. **进程等级**:Android系统根据进程与用户交互的重要性将其分为五级:前台进程、可见进程、服务进程、后台进程和空进程。保活策略主要针对服务进程和后台进程,因为它们较容易被系统回收。 2. **服务(Service)...

    Android 5.0系统以上获取运行进程demo

    这个类提供了关于当前正在运行的应用进程的详细信息,包括进程的importance等级、进程名以及关联的包名等。你可以通过注册`BroadcastReceiver`监听`ACTION_TASK_RESUMED`和`ACTION_TASK_PAUSED`广播来间接获取进程...

    Android LMK机制简介

    1. **进程优先级**:根据进程的类型和当前状态,Android会赋予每个进程不同的优先级。 2. **生命周期管理**:进程的生命周期管理对于内存管理非常重要。例如,当内存紧张时,Android会优先终止那些处于非活跃状态的...

    获取手机正在运行的app,以及当前前台正在运行的app(兼容android6.0)

    `RunningAppProcessInfo`对象包含了关于正在运行的应用进程的信息,如进程ID、重要性等级和包名等。 3. **解析数据**:在获取到`RunningAppProcessInfo`列表后,你可以遍历它来获取每个应用的详细信息,比如找出...

    android SQLite保存多个选择题信息

    SQLite是一个开源的关系型数据库,它不需要单独的服务器进程,并且可以嵌入到应用程序中。在Android中,每个应用都有自己的SQLite数据库,可以通过`SQLiteOpenHelper`类来创建和管理数据库,以及通过`SQLiteDatabase...

    android考试复习资料

    Android 系统中的进程优先级从高到低分为多个等级,这决定了应用的执行效率和资源分配。在 Android 应用中,主要的四大组件是 Activity、Service、BroadcastReceiver 和 ContentProvider。 Activity 是应用程序的...

    074集-进程的优先级

    2. Android进程生命周期和状态转换。 3. 进程优先级的分类及其影响因素。 4. 如何通过编程方式改变进程优先级。 5. OOM Killer的工作原理和内存管理策略。 6. JobScheduler和WorkManager的使用方法及其优势。 理解...

    Android中Log相关流程介绍

    Android的日志系统是一个关键的开发工具,用于跟踪应用程序的运行状态,帮助开发者诊断问题。本文将深入探讨Android中log(写入、读取)的代码流程,重点分析C/C++层如何使用log系统,并解析logcat工具的使用。 ###...

    Android_Handle_Thread

    进程的重要性分为五个等级:前台进程、可见进程、服务进程、后台进程和空进程。这五个级别的划分基于进程内组件的类型和状态,用于优化内存管理。例如,前台进程是用户当前正在使用的,系统会尽可能保留;而后台进程...

    基于android模拟考试系统源代码.zip

    在移动设备日益普及的今天,教育领域的数字化进程也愈发加速,基于Android平台的模拟考试系统成为了教学辅助的重要工具。本系统采用Java编程语言,利用Apache开源技术,实现了包括单选题、多选题、判断题在内的全面...

    android源码游戏源代码跳动的心

    通过对"跳动的心"这个游戏源代码的学习和分析,开发者可以深入了解Android游戏开发的各个方面,包括图形绘制、用户交互、音频处理、性能优化等,这对于提升个人技能和开发新的游戏项目大有裨益。同时,源码中的实践...

    Android提高Service优先级的方法分析

    因此,了解如何提高Service的优先级是Android开发中的一个重要知识点。 Service的优先级分为前台(foreground)和后台(background)。默认情况下,Service被创建时处于后台状态,其优先级较低。当Service处于后台...

    基于Android系统的取证技术分析.pdf

    Root是获取Android设备最高等级权限的过程,这样用户就可以完全控制设备,包括修改系统文件、删除预装应用、提升设备性能等。对于取证人员来说,Root设备同样可以提供对设备文件系统的完全访问权限,从而更深入地...

    Android内核驱动——内存管理

    如果当前空闲内存低于某一个阈值,就以对应的优先级等级为基准,遍历所有进程,寻找符合条件的进程进行释放操作。 ##### 3. 杀死进程的方式 LMK通过向目标进程发送不可忽略或阻塞的SIGKILL信号来强制终止进程。这...

    Android系统总结+精通android

    - **Android SDK**:包含了开发Android应用所需的所有工具和库,包括Java Development Kit (JDK) 和Android API等级库。 3. **Android编程语言** - **Java**:Android早期主要使用的编程语言,使用面向对象的特性...

    Android权限表

    5. **ACCESS_MOCK_LOCATION**:用于测试,允许创建模拟定位提供者,可以生成假的地理位置数据。 6. **ACCESS_NETWORK_STATE**:应用可以查看网络连接的状态,判断是否已连接到互联网。 7. **ACCESS_SURFACE_...

    Android中获取正在运行的应用程序ActivityManager的使用(二)

    在Android系统中,ActivityManager是Android提供的一个关键组件,它主要负责管理应用程序的生命周期和全局状态。本篇文章将深入探讨如何利用ActivityManager来获取正在运行的应用程序信息,这是Android开发中的一个...

Global site tag (gtag.js) - Google Analytics