手机越来越大5g_Android 手机运存越来越大,为什么后台应用还是会被「杀」?

安卓不知不觉就陷入了关于“乐屋”的奇怪圈子。 一方面大制造商陆续发售12G RAM的手机,另一方面,刚放置在后台的下载任务没有按照预定从后台下载,打开微信欣赏启动画面的孤独小人和蓝星,配合上课的辛苦30分钟的塔斯卡规则

耳熟能详的话开始在我们的脑海里诞生——我的背后又是“被杀了”。

应用程序开发人员的“指控”

第二天早上醒来,睡眠追踪应用程序中记录的“一马平川”不是因为“睡着死了”,睡眠追踪应用程序没有正常运作。

遇到上述问题的人不仅是你,还有很多人决定向这些应用程序的开发者反馈问题,其实问题并不是应用程序本身。

Android平台着名的睡眠跟踪应用程序Sleep as Android开发团队Urbandroid Team建立了一个叫做“不要杀死”的网站,将目标指向手机制造商的恶劣后台管理机制。

Don't kill my app! 网站对OEM系统的评价

以三星为例,根据Urbandroid Team,三星的某些机型升级到基于OneUI的Android 9后,“杀死后台”现象变得特别严重,自适应电池的机制比本机Android更为激进,3 最糟糕的情况是,如果设置了能够自动跳过周末的第三者闹钟,这个闹钟很可能不能像系统闹钟那样在下周一的早上响

为了呼吁“不要杀死”,华为、加、粟、华硕等手机制造商的定制版Android系统虽然管理后台的方式相似,但继承了iOS上的“消灭杀死”原则——多任务处理某个应用程序的任务卡

这里可能有很多问题

Android的运行内存越来越丰富,为什么会有这么严重的“杀死后台”现象?

本机Android也采用类似的卡多任务方式,有什么区别?

Android是否需要通过“一触式清洗”的方式释放执行内存?

我们必须从一些基本原理开始。

Android的内存循环机制

在官方文件中,谷歌将“应用程序本身不直接控制的应用程序进程生命周期”描述为Android最基本、最独特的特征。 在此,我们想将“应用程序流程生命周期”暂时理解为文章开头和第一部分所述的“背景”或“背景流程”。

Android应用程序的后台进程应由Android系统决定。

当可用的可执行存储器容量不足时,Android系统独自决定回收和释放特定应用程序的后台进程占用的容量,将在此过程中Android所挥发的刀柄称为LMK(Low Memory Killer )。 LMK如何判断哪些应用程序可以“杀死”,哪些应用程序应该暂时错过呢?

每个应用程序都有不同的组件,其中特定组件的运行状态构成了LMK回收内存的“优先级”引用集。 这包括前台进程、可见进程、服务进程和缓存进程。

应用程序通常包含的进程类型

前台流程、可见流程和服务流程通常与我们在手机上执行的操作直接或间接相关。 例如,在前台交互和操作的事件窗口( Activity )、在广播接收器( BroadcastReceiver )等待触发的任务规则,以及在后台通过Wi-Fi网络自动上传备份照片 这些过程的优先级按降序来降低,并且LMK一般不被提及。

高速缓存过程是暂时放在执行存储器中的部分,也是本文讨论的话题和主要相关的要点。

在正常操作的( Android )操作系统中,高速缓存进程应该是内存管理机制唯一需要交互的部分。 正常运行的Android系统通常在运行的存储器中临时存储和调用多个缓存进程,提高应用程序之间的交换效率,并且有计划地回收旧的空闲进程。

在极端情况下,例如,如果Android系统在收集所有缓存进程之后发现空闲内存仍然不足(例如,如果对低内存“老大爷”执行“崩溃3”),则LMK将基于优先级执行服务进程、可见进程、鹅肝酱 并且,在这些我们通常使用直观感觉的程序都必须回收的时候,出现了开头所述的微信的重负荷,音乐的中断,下载的消失等现象。

谁动了你的后台?

在可用内存有富馀的情况下,可能会遇到LMK这一“太刀”问题( Android 9时期常见的Pixel 3用户),而其他规则可能会额外参与Android系统的正常内存回收机制。

这里提到的“其他规则”主要有两种形式,一种类似于华为设备预装的“节电向导”,清除了不在背景白名单中的所有应用程序的背景,另一种类似于谷歌发布的背景 利用后台限制、自适应电池等功能进行“魔改”,远远超出这些功能的实际效果,并达到意外的负面效果。

据Don't kill my app说! 据统计,第二种后台介入机制常见于三星、加和初期的诺基亚机型,在此厂商通常用“白名单”这样的方法进行过滤。

以三星手机的基于Android 9的One UI为例,默认情况下,One UI会关闭所有第三方应用程序的“允许后台活动”选项,但国内常见应用程序(如微信、QQ等)

One UI的后台管理

部分配备氢操作系统的机型分割了上述应用程序进程,除了本机Android的后台限制、电池优化之外,还基于被称为“自启动管理”的设定来管理应用程序的自启动,被称为“深度优化”的服务器 后者多数智能手表、操作设备在一定时间后失去与手机的蓝牙连接,最终导致睡眠跟踪、运动记录等功能无效。

氢操作系统的自启动管理

问题是,由于这些功能的深度嵌入,一般用户在安装应用程序后通常不会在最初的时间进行设定,氢操作系统在系统更新后自动将一些用户设定复位非常有名,需要在后台正常运行的应用程序

换句话说,国内大部分定制ROM都是在后台管理的,因此选择了“宁肯小姐杀了一千人也不能错过”的做法。

大家都在看

相关专题