Android进程类型及优先级(前台进程/可见进程/服务进程/缓存进程/空进程)

Android进程类型及优先级

一、Android 进程优先级

Android 进程优先级 :前台进程 > 可见进程 >服务进程 >缓存进程 > 空进程 ;

  • 关键优先级进程 : 活动进程 ;
  • 高优先级进程 : 可见进程 , 服务进程 ;
  • 低优先级进程 : 后台进程 , 空进程 ;

Android 系统中会尽量保证优先级高的进程的存在时间尽可能长 ;如果资源不足 ( 这里的资源最主要的是内存 ) , 为了可以新建进程 , 以及重要进程的运行 , 系统会杀死一些低优先级进程 , 并回收该进程所占用的内存 ;如果出现内存不足的情况 , 会按照上述进程优先级顺序进行回收 , 从低到高进行

二、前台进程

前台进程的条件:

  1. 前台 Activity 进程 : 当前展示的 Activity 所在的进程 , 即已经调用了 onResume 方法 , 处于前台的界面进程 ;
  2. 绑定前台 Activity 的 Service 进程 : 绑定在 前台正在交互 Activity 上的 Service 进程 ;
  3. 前台运行的 Service 进程 : 在前台运行的 Service 服务 , Service 调用了 startForeground 方法后的状态 ;
  4. 处理生命周期回调的 Service 进程 : 正在执行生命周期回调方法的 Service 服务进程 , 如正在执行 onCreate , onStart , onDestory 方法的 Service 进程 ;
  5. 处理 onReceive 回调的 BroadcastReceiver 进程 : 接收到信息 , 执行 onReceive 方法的 BroadcastReceiver 广播接收者 ;

一般情况下 , 前台进程不会被回收 , 只有内存非常低时 , 无法正常响应用户操作 , 才回收前台进程 ;

三、可见进程

可见进程 : 不是前台组件 , 但是出于用户可见范围内 ;

  1. 绑定 onPause 界面的 Service 进程 : Activity 组件调用 onPause 生命周期函数 , 但是没有调用 onStop 方法彻底不可见的 Activity 组件 , 如弹出对话框 , 对话框是前台进程 , 后面被覆盖的 Activity 就变成了可见进程 ;
  2. 绑定在 可见 Activity 组件上的 Service 进程 , 也被称为可见进程 ;

可见进程也是很重要的进程 , 除非为了保证前台进程的运行 , 一般不会被回收 ;

四、服务进程

  1. 服务进程 : 调用 startService 方法启动的 Service 进程组件 , 就是服务进程 , 其没有与 Activity 组件绑定 , 因此该 Service 组件的优先级要降低一个等级 , 称为服务进程 ;

服务进程没有与用户可见的 Activity 界面有关联 ;服务进程操作一般是比较重要的操作 , 如后台下载 , 数据传输等 , 除非内存不足 , 无法维持可见进程与前台进程 , 一般不会被回收

五、后台进程

后台进程 :

  1. 用户不可见的 Activity 进程 , 如调用了 onStop 方法的 Activity 组件 , 但是没有调用 onDestroy 方法销毁的界面组件 ;

出现后台进程的几种情况 :

  • 打开了新的 Activity 页面 , 没有 finish 掉当前界面 ;
  • 点击 Home 键 , 任务栈进入后台 ;
  • 点击 Menu 键 , 切换了其它任务栈 ;

六、空进程

空进程中不包含任何应用组件 ( Activity , Service , BroadcastReceiver , ContentProvider ) ;

空进程一般用于缓存数据 , 优先级最低 , 系统随时都会终止空进程 ;

附录

相关推荐
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android