Fork me on GitHub

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用户会一直处于离线模式,不仅仅更省电,还可以进一步限制应用相互唤醒行为;

上述相同点在于推送SDK技术完成相互唤醒操作,主要是由于官方的Google本身被墙,品牌厂商不得已阉割了Google服务,导致无法想IOS那样APNS技术管理推送消息进行统一管理,导致国内的应用市场环境趋利性,一味的根据自己的利益,后台强行推送自己的广告消息给无辜的用户。

解决方法:

1.自启动管理:在开机的时候就限制应用的后台偷偷自启动行为;PS:经过多年的手机厂商和流氓应用的斗智斗勇,目前市面上品牌手机自带的自启动管理可以很好的限制程序自启动,当然以前的纯粹禁用开机广播组件方法在相互唤醒已经流氓应用

2.后台清理:主要利用APP休眠技术防止应用的后台启动和相互唤醒,这里的技术实现也是很巧妙的;

3.通知管理:将不希望在通知栏出现广告信息的应用屏蔽显示,这里主要是通过权限管理的方式禁用流氓应用的消息显示功能;

4.Android设置–> WLAN–>点击菜单键选择高级–>休眠状态下保持WLAN连接的下拉列表{始终、仅限充电时、从不(会增加数据流量)},如果设置不为始终,那么我们锁屏休眠后,程序将会处于无网络状态,相应的app用户会一直处于
离线模式,不仅仅更省电,还可以进一步限制应用相互唤醒行为;

posted @ 2020-10-23 16:19  yooooooo  阅读(910)  评论(0编辑  收藏  举报