谷歌|谷歌也看不下去了!安卓内存巨大但为何还杀后台
安卓是Google发起的,但现在安卓的一些行径,连Google也看不下去了 。
近日,安卓发起了一项针对安卓的调查——Google认为很多OEM安卓机厂商,其推行的安卓系统存在严重的杀后台问题,App难以在后台存活 。
文章图片
Google最近和一些安卓厂商不对付了
Google认为,现今很多OEM的安卓系统都违背了Google的政策,令App无法在后台持续运行 。
虽然大多数安卓应用并不需要在后台保留进程,但也有部分类别的确有此类需求,例如健康记录App,需要持续记录数据 。
然而,部分OEM安卓系统却无法满足此类需求,安卓开源项目AOSP的错误跟踪器就曾经揭露出某些OEM厂商滥用安卓机制,禁止第三方应用在后台运行,甚至还杀死了AccessibilityService这个系统级别的无障碍服务进程 。
Google实际上为安卓系统制定了杀后台的规则,但OEM厂商们却在这方面并不透明,开发者和用户无法知道OEM安卓到底会杀掉怎么样的App后台 。
有时候,OEM安卓厂商会将某些App加入白名单,例如部分社交和通讯软件,以确保消息的及时推送 。
但这些机制对于用户和开发者来说,相当于黑箱,人们无法判断到底哪个App能在后台运行、哪个不能,最终的体验并不如人意 。
安卓基于Linux系统,本身拥有完善的多后台机制,在诞生之初其桌面级的“真后台”是玩家津津乐道的卖点 。
近年来安卓机的内存越来越大,甚至已经堆到了16G的容量,和桌面PC相比也不遑多让 。但为何安卓生态中,杀后台的现象反而变严重了?这就来简单聊聊这个问题吧 。
为什么安卓系统要激进杀后台?
原生安卓系统支持App后台保留进程,但传统上也有一套循序渐进的后台退出机制 。在传统上,安卓系统会为App进程分配不同的状态,例如Foreground_App(前台应用)、Visiable_App(可见应用)、Secondary_App(二级应用)、Hidden_App(隐藏应用)、Content_Provider(内容提供器)、Empty_App(空应用)等状态 。
当内存不足的时候,系统会优先终止Empty_App进程和服务,将内存释放出去;内存再次吃紧,就开始对Content_Provider动手脚了,以此类推 。
文章图片
安卓App不同的状态,系统会据此判断杀进程的优先级
但是,并不是每个App都老老实实为进程注册合理的状态的 。很多安卓App会通过一些手段,来修改自己进程的属性,来长期驻留后台 。
例如,一些流氓App将startForeground来把自己注册成为前台应用,让自己的后台成为最高优先级,永远不会被系统干掉;又例如,有流氓App会利用安卓的悬浮窗机制,设置一个1像素大小的透明悬浮窗,让App始终处于激活状态,避免后台被杀;又例如,流氓App们抱团取暖,后台进程利用安卓系统的周期性任务进行链式唤醒,开启一个App等于唤醒N个App的后台……
文章图片
文章图片
流氓App驻留后台的经典方法——利用广播接收器触发后台自启动
App们的这些行径,消耗了额外的资源,对续航和流畅的负面影响肉眼可见 。
为此,官方的安卓系统也作出了一些应对 。例如针对App乱注册startForeground状态,安卓7.0之后会在通知栏强制显示“XX正在后台运行”;又例如安卓收紧了悬浮窗权限,使用悬浮窗必须开启相应开关;而安卓11则很大程度上了App之间的链式唤醒等等 。
文章图片
安卓7.0对很多后台运行的App都在通知栏有公示,后来这些App不得不改变后台驻留的方法
但道高一尺魔高一丈,安卓系统的很多限制后台机制,需要App使用较高版本的TargetAPI才能生效,而大量App仍使用老旧的开发规范,但用户却不可能抛弃其中的很多App 。
因此,App强行驻留后台的行径,对于用户的负面影响是实打实的,既然Google官方安卓无法做到,那就只能由第三方安卓ROM来动手了——如果哪个牌子的安卓不做,就会在用户中落下“又卡又热又耗电”的坏口碑 。
推荐阅读
- 下载|手机浏览器看文章自动跳转下载APP 人民日报发声
- 气球|花3年搞出气球的一千种死法 这操作把我看害怕了
- 牙刷|电动牙刷真的比手动牙刷强吗?看完终于明白了
- 真我|realme全球首发150W闪充!老外喊话苹果谷歌
- 华为|一图看懂:华为移动路由推“半价”服务升级包 月享2000GB
- 特斯拉|600万粉汽车大V吐槽特斯拉被抄袭:她还没我好看
- 高铁|河南最后一个地级市也要通高铁了 高铁站如巨龙腾飞
- LV|LV单个包涨价过万 网友:有钱的不在乎、没钱的也不在乎
- 机器人|机器人也要面子!北京街头两辆无人售卖车运营时吵架
- 埃隆马斯克|马斯克也碰到过“女海王”!一文看懂马斯克的感情史