Android 功耗(12)---省电续航-相互唤醒

省电续航-相互唤醒

相互唤醒现象描述

安装100个APP,不小心点开了一个唤醒类型的APP,过一会儿,后台偷偷自启动了30~40个APP。
怪不得雷布斯之前说国内的应用市场环境太乱了,很多情况下用户都把耗电归结于Android系统就是比IOS不给力、电池low、这个ODM厂商的系统真耗电。

相互唤醒类型APP

01百度系APP家族:
02阿里系APP家族:
03腾讯系APP家族:
04个推系APP家族:
05友盟系APP家族:
06各种推送服务类型的APP
这是一个很有趣的“葫芦娃”现象,举个栗子,不小心点开了上述家族的任意一个应用,手机亮屏解锁,这时被打开的葫芦娃,他会马上叫醒家族中的所有葫芦娃,“大家快后台启动起来啊,待会我们要在通知栏发消息,打广告了”。用户如果有心想验证,可以在设置中的“正在运行的应用列表”查看,一般会发现好多应用启动了。

相互唤醒带来的危害

01同时启动家族内的所有APP的动作,会因后台启动数量过多,带来短暂造成系统卡顿;
02过多且非用户主动打开的后台应用,对系统内存和续航能力都是一种流氓的慢性蚕食。
03用户通知栏更是变成各种商业的博弈,个别后台推送消息还调用提示音进行广告提示,巴不得用户24小时使用。其实任何的图形和声音调用都是需要费电的。
04若缺乏自启动管理,每次用户开机不打开任何应用,后台也是会卖力的启动任何可以后台启动的应用
05待机下快速进入深度休眠模式因相互唤醒机制变得很困难,系统深度休眠模式的待机电流在5mA左右,若是一款不装任何应用的手机,待机时间按天算都是小case
总之一句话,占内存费电。

相互唤醒的启动方式

方式一:

系统广播(开机、解锁)->启动推送服务pushService,即第三方APP永远不被杀死的SDK技术->将所有注册相同推送服务的家族系APP执行后台启动;

方式二:

通过AlamManagerService定时启动pushService->将所有注册相同推送服务的家族系APP执行后台启动;

方式三:

ContentProvide读取数据启动app->启动推送服务pushService,即第三方APP永远不被杀死的SDK技术->将所有注册相同推送服务的家族系APP执行后台启动;

方式四:

伪装Activity或前台进程启动app->启动推送服务pushService,即第三方APP永远不被杀死的SDK技术->将所有注册相同推送服务的家族系APP执行后台启动;
上述相同点在于推送SDK技术完成相互唤醒操作,主要是由于官方的Google本身被墙,品牌厂商不得已阉割了Google服务,导致无法想IOS那样APNS技术管理推送消息进行统一管理,导致国内的应用市场环境趋利性,一味的根据自己的利益,后台强行推送自己的广告消息给无辜的用户。
解决方法:1.自启动管理:在开机的时候就限制应用的后台偷偷自启动行为;PS:经过多年的手机厂商和流氓应用的斗智斗勇,目前市面上品牌手机自带的自启动管理可以很好的限制程序自启动,当然以前的纯粹禁用开机广播组件方法在相互唤醒已经流氓应用失效了,当然解决方案也是有的,毕竟道高一尺,魔高一丈,大家都是相互进步的。  2.后台清理:主要利用APP休眠技术防止应用的后台启动和相互唤醒,这里的技术实现也是很巧妙的;3.通知管理:将不希望在通知栏出现广告信息的应用屏蔽显示,这里主要是通过权限管理的方式禁用流氓应用的消息显示功能;4.Android设置–> WLAN–>点击菜单键选择高级–>休眠状态下保持WLAN连接的下拉列表{始终、仅限充电时、从不(会增加数据流量)},如果设置不为始终,那么我们锁屏休眠后,程序将会处于无网络状态,相应的app用户会一直处于离线模式,不仅仅更省电,还可以进一步限制应用相互唤醒行为;

你可能感兴趣的:(android功耗)