作者 | Anm718(酷友)Android 系统长期存在应用后台管理机制 。在多数人的认知中,应用分前台和后台 。最简单的判别方式:显示界面的应用就是前台应用,在运行不显示界面的应用就是后台应用 。
安卓十多年发展至今,应用数量庞大,实现的功能各不相同,那么简单的后台机制肯定无法满足需求 。本篇图文详细解释一下 Android 的后台管理机制 。具体分三节 。
目录:- Android 后台机制的根本
- 内存管理:应用状态分级、LMK 机制、与其他系统的区别 。
- 为什么后台应用关不掉:应用保活、自唤醒、关联启动 。
- 斩杀恶性应用的利剑:后台纯净、切断唤醒、持剑人 google 的手段 。
一、Android 后台管理的根本安卓内存管理方案:
Android 沿用了 linux 的内存管理方案,为低内存回收机制 。与开多少就占用多少的 windows 不同,Android 是你不开应用,也会占用内存 。在空载状态下,Android P 占用下限约为 500mb (大概,我测试可以正常运行),上限为设备物理内存的 1/2,即开机占用一半内存 。而安卓应用不存在关闭一说,退出之后仍然会留在内存中 。直至剩余内存过低,才会由系统机制将其杀掉,回收它占用的那部分内存 。
了解应用状态的分级:
- foreground 前台 。设备当前运行的应用,你打开什么软件,前台应用就是什么,很容易理解吧 。
- visible 可见 。与前台类似,同样可以显示在屏幕上,让用户看到,以及交互操作,如输入法、浮窗 。
- secondary 次级 。后台运行的服务,通常占用资源不大,但用户很需要其功能,比如各家系统的云服务 。
- hidden 后台 。后台运行的进程,在应用运行时直接按下 home 键,应用仍在运行 。如果应用的优化没做好,那么将占用大量资源 。
- content_provider 内容 。与用户关系不大,通常感知不强 。
- empty 空白 。应用已经停止运行,没有进程与服务,只留下一个缓存,确保下一次打开时更迅速 。
上述六种状态,越往下,重要性越低,越容易被杀掉 。
Android 后台的杀手 - Low Memory Killer:
应用在后台运行,固然可以增加启动速度,或便于推送信息,但内存大小和电池容量都不是无限的 。当后台一多,就会拖累性能,降低续航 。系统自然不可能坐以待毙,等着内存爆满死机 。Android 系统使用了的低内存杀后台机制 LowMemoryKiller,以下简称 lmk 。
![开机内存占一半,应用后台杀不死?那些不了解的Android后台机制](http://img.jiangsulong.com/220415/0R504A04-0.jpg)
文章插图
kernel lmk 界面
可以看到,lmk 对每个应用状态都有对应数值 。当剩余内存大小达到数值时,lmk 就会杀掉对应状态的应用,以释放内存 。若杀掉应用,剩余内存仍然不足,便会继续杀掉上一个状态级别的应用,以此类推 。一直杀到前台应用,这便会造成正运行的应用或游戏闪退 。当然,目前安卓机动辄 4g、8g 内存的时代,能让 lmk 杀到前台的应用应该不存在了吧,除非是出现 bug 。
应用在后台占用的资源:
在固有印象中,安卓后台应用一多,就会十分卡顿 。因为应用运行是要消耗硬件资源的,不论前台和后台 。可能在 500mb 内存的时代没有那么明显的感知,因为内存太小,应用留不住后台 。但从安卓机进入了 1g、2g 内存的时代,这个缺陷就一下子暴露出来了:后台杀不死,杀死后自启动,一个应用拖好几条进程,一条进程又有好几项服务,堪称群魔乱舞 。此现象持续了至少六年 。
那这些应用消耗的是哪些资源呢?看上文的后台分级,这些应用一般属于次级或后台,与前台应用一样运行,会占用 CPU 运算资源,数据操作会占用闪存的读写资源,这两项就足以死死卡住设备,使其无法正常运行 。这些资源总量是一定的,在当时性能普遍不强时,资源用一点就少一点,后台占用大了,前台自然要卡 。
空载:
![开机内存占一半,应用后台杀不死?那些不了解的Android后台机制](http://img.jiangsulong.com/220415/0R5045H5-1.jpg)
文章插图
空负载
后台开启百度地图:
![开机内存占一半,应用后台杀不死?那些不了解的Android后台机制](http://img.jiangsulong.com/220415/0R50431K-2.jpg)
文章插图
后台挂百度地图
此时已经卡到没法正常运行了,各种动画掉帧 。
Android 与其他系统后台的区别:
对于各个系统的应用,一般可以用两种状态来表示:Android 分为 “运行” 和 “停止”,IOS 分为 “前台” 和 “冻结”,Windows 分为 “启动” 和 “关闭” 。
推荐阅读
- 小米|小米MIUI Go曝光:小内存手机能流畅运行
- JVM内存管理机制
- IDC:浪潮/华为/曙光占据中国AI服务器市场74%份额
- Redis内存分析工具--rdr安装与使用
- 如何关闭Win10系统自动更新,防止电脑无法开机
- BIOS错误信息及解释-值得收藏
- 荣耀|千元5G手机也有“10GB”大内存!荣耀Play6T明日开售:1199元起
- win7系统如何设置开机启动项,优化开机速度?
- 教师|专业还会影响择偶?这几个专业择偶时不占优势,男同学要谨慎考虑
- 华为|华为新款V55智慧屏曝光:内存升级 加量不加价