【原创实验】国产APP唤醒小实验
看了我之前的文章的很多读者,当然也包括很多没看过我之前文章的读者都不了解当 App 装了很多以后,Android 为什么会变得很卡。这篇文章给大家做一个科普。
在进行科普之前,我们先做一个实验:
实验开始:
原料:一台 Andriod 手机,锁大师,百度文库,百度地图,百度贴吧
原理:锁大师在监测到一个软件启动时,会判断你是否给这个软件加过密码,如果加过则弹出密码输入框。但当期检测到这个软件挂到后台时,弹出框会立刻消失。
步骤:
1. 安装锁大师,百度文库,百度地图,百度贴吧
2. 使用手机自带安全中心禁止所有自启动权限
3. 使用锁大师给其中的两个软件加密码,留下一个不加(以百度文库,百度地图加锁,百度贴吧不加锁为例)
4. 在手机设置中找到应用列表,并在下一级界面中强制停止百度文库,百度地图和百度贴吧
5. 回到桌面,打开百度贴吧,注意观察桌面,你会发现,锁大师会弹出一下密码登录框,然后 1 秒左右立刻消失,然而在这个实验中百度贴吧并没有被加锁。
那么这个密码登录框是哪来的呢?这么明显你不会看不出来了吧?
没错,这就是 Android 系统的 App 唤醒机制。
在当前 Android 环境下,最大的引起手机卡顿的问题不是 App 各种自启动权限,而是互相唤醒机制。
我们举一个简单的例子:
百度文库,百度地图,百度贴吧以及百度旗下所有游戏之间存在互相唤醒关系,当其中一个软件运行时,其他软件都被这个软件唤醒,并挂在后台。当然这个操作你很可能感受不到,等你得知其挂在后台时,往往是过了很久,这个软件给你发一条推送消息,而你收到这条消息并且长按消息看到其来源时,才知道这个软件启动了,这就很容易让一般的手机使用者觉得是 “软件自启”。其实这个软件是被唤醒的。软件被唤醒后大量占用内存空间,频繁读写储存器,造成系统卡顿。
与此类似的还有腾讯家的各种软件,阿里家的各种软件。
如果你明白了这个原理,你也就明白为什么 iPhone 不卡:因为 IOS 两个软件间互相唤醒是需要使用者同意的!比如你把一篇 UC 上的文章分享到微博,就会收到一条是否允许的提示。这样如果两个软件想互相唤醒,用户一眼就能看出来。同时 IOS 对软件的权限管理更加严格,自启动,唤醒都是有控制的。
所以还是那句话,不是安卓系统不好,而是好系统被国产软件商搞臭了。
引一句 Android 官博上的话作为这篇文章的结尾:
Android 在我们这 1G 内存都不卡,不知道为什么在中国就会很卡。