【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )

简介: 【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )

文章目录

一、Android 进程优先级

二、前台进程

三、可见进程

四、服务进程

五、后台进程

六、空进程





一、Android 进程优先级


Android 进程优先级 : ① 前台进程 > ② 可见进程 > ③ 服务进程 > ④ 缓存进程 > ⑤ 空进程 ;


关键优先级进程 : ① 活动进程 ;


高优先级进程 : ② 可见进程 , ③ 服务进程 ;


低优先级进程 : ④ 后台进程 , ⑤ 空进程 ;



Android 系统中会尽量保证优先级高的进程的存在时间尽可能长 ;


如果资源不足 ( 这里的资源最主要的是内存 ) , 为了可以新建进程 , 以及重要进程的运行 , 系统会杀死一些低优先级进程 , 并回收该进程所占用的内存 ;


如果出现内存不足的情况 , 会按照上述进程优先级顺序进行回收 , 从低到高进行 ;



文档参考 :


进程和应用生命周期文档参考 : https://developer.android.google.cn/guide/components/activities/process-lifecycle

进程与线程文档参考 : https://developer.android.google.cn/guide/components/processes-and-threads.html

通过线程提升性能文档参考 : https://developer.android.google.cn/topic/performance/threads





二、前台进程


前台进程 :


① 前台 Activity 进程 : 当前展示的 Activity 所在的进程 , 即已经调用了 onResume 方法 , 处于前台的界面进程 ;


② 绑定前台 Activity 的 Service 进程 : 绑定在 前台正在交互 Activity 上的 Service 进程 ;


③ 前台运行的 Service 进程 : 在前台运行的 Service 服务 , Service 调用了 startForeground 方法后的状态 ;


④ 处理生命周期回调的 Service 进程 : 正在执行生命周期回调方法的 Service 服务进程 , 如正在执行 onCreate , onStart , onDestory 方法的 Service 进程 ;


⑤ 处理 onReceive 回调的 BroadcastReceiver 进程 : 接收到信息 , 执行 onReceive 方法的 BroadcastReceiver 广播接收者 ;



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






三、可见进程


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


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


绑定在 可见 Activity 组件上的 Service 进程 , 也被称为可见进程 ;



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






四、服务进程


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


服务进程没有与用户可见的 Activity 界面有关联 ;


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






五、后台进程


后台进程 :


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



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


打开了新的 Activity 页面 , 没有 finish 掉当前界面 ;


点击 Home 键 , 任务栈进入后台 ;


点击 Menu 键 , 切换了其它任务栈 ;






六、空进程


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


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


目录
相关文章
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
算法 调度
深入理解操作系统:进程调度与优先级反转问题
【9月更文挑战第36天】操作系统是计算机科学中的核心概念,它管理着计算机的硬件资源和软件进程。在多任务处理环境中,进程调度是保证系统高效运行的关键机制之一。本文将探讨进程调度的基本概念、调度算法以及它们如何影响系统性能。同时,我们还将讨论优先级反转问题,这是一个在实时系统中常见的问题,它可能导致系统响应时间不可预测。通过分析优先级反转的原因和解决方案,我们可以更好地理解操作系统的设计和优化策略。
|
存储 算法 前端开发
深入理解操作系统:进程调度与优先级队列算法
【9月更文挑战第25天】在操作系统的复杂世界中,进程调度是维持系统稳定运行的核心机制之一。本文将深入探讨进程调度的基本概念,分析不同的进程调度算法,并着重介绍优先级队列算法的原理和实现。通过简洁明了的语言,我们将一起探索如何优化进程调度,提高操作系统的效率和响应速度。无论你是计算机科学的初学者还是希望深化理解的专业人士,这篇文章都将为你提供有价值的见解。
|
算法 人机交互 调度
进程调度算法_轮转调度算法_优先级调度算法_多级反馈队列调度算法
轮转调度算法(RR)是一种常用且简单的调度方法,通过给每个进程分配一小段CPU运行时间来轮流执行。进程切换发生在当前进程完成或时间片用尽时。优先级调度算法则根据进程的紧迫性赋予不同优先级,高优先级进程优先执行,并分为抢占式和非抢占式。多队列调度算法通过设置多个具有不同优先级的就绪队列,采用多级反馈队列优先调度机制,以满足不同类型用户的需求,从而优化整体调度性能。
693 15
|
算法 调度
深入理解操作系统:进程调度与优先级反转
【9月更文挑战第21天】在操作系统的心脏跳动着的,是进程调度器。它决定了哪个进程运行,何时运行,以及如何优雅地共享CPU资源。本文将通过浅显易懂的语言和直观的代码示例,探索进程调度的奥秘,揭示优先级反转问题及其解决方案,带领读者领略操作系统中这一精妙绝伦的设计。
|
Java Android开发 数据安全/隐私保护
Android中多进程通信有几种方式?需要注意哪些问题?
本文介绍了Android中的多进程通信(IPC),探讨了IPC的重要性及其实现方式,如Intent、Binder、AIDL等,并通过一个使用Binder机制的示例详细说明了其实现过程。
881 4
|
调度 Android开发 UED
Android经典实战之Android 14前台服务适配
本文介绍了在Android 14中适配前台服务的关键步骤与最佳实践,包括指定服务类型、请求权限、优化用户体验及使用WorkManager等。通过遵循这些指南,确保应用在新系统上顺畅运行并提升用户体验。
872 6
|
算法 调度 UED
探索操作系统核心:进程调度与优先级队列
【8月更文挑战第31天】在计算机的心脏——操作系统中,进程调度是维持系统运行的关键机制。本文将深入浅出地介绍进程调度的概念,并通过一个简单的优先级队列算法示例,展示如何在操作系统设计中实现基本的进程管理。我们将从理论到实践,逐步揭示如何通过代码构建一个模拟的进程调度系统,帮助读者理解这一复杂但至关重要的操作系统特性。
|
存储 算法 调度
MacOS环境-手写操作系统-34-进程优先级
MacOS环境-手写操作系统-34-进程优先级
128 0
|
数据可视化 JavaScript 前端开发
Python中的数据可视化:从基础到进阶深入理解操作系统:进程调度与优先级
【8月更文挑战第29天】数据可视化是现代数据分析不可或缺的一环。本文将引导读者通过Python这一强大的编程语言,利用其丰富的库和工具,探索数据可视化的奥秘。我们将从最基础的图表开始,逐步深入到更复杂的可视化技术,最终实现高级定制和交互式可视化。无论你是数据科学新手还是希望提升可视化技能的开发者,这篇文章都将为你打开一扇通往数据美学的大门。

热门文章

最新文章