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

  • 相关阅读:
    String类型作为方法的形参
    [转] 为什么说 Java 程序员必须掌握 Spring Boot ?
    Centos打开、关闭、结束tomcat,及查看tomcat运行日志
    centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等
    防火墙没有关导致外部访问虚拟机的tomcat遇到的问题和解决方法
    可以ping通ip地址,但是访问80,或者8080报错
    JAVA的非对称加密算法RSA——加密和解密
    CA双向认证的时候,如果一开始下载的证书就有问题的,怎么保证以后的交易没有问题?
    图解HTTPS协议加密解密全过程
    https单向认证服务端发送到客户端到底会不会加密?
  • 原文地址:https://www.cnblogs.com/linhaostudy/p/13864783.html
Copyright © 2011-2022 走看看