为了确保APP最大限度收到消息:
1.设置-》应用管理-》应用程序管理-》你的APP-》电量与优化-》关闭“后台智能运行控制”。开启“允许被系统启动”和“允许被第三方应用启动”。
2.桌面上的"手机管理"(小蓝伞)-》应用耗电优化-》你的APP-》开关设置为关闭状态。
3.小蓝伞-》联网控制(详细设置)-》你的APP-》选永不断网。
4.小蓝伞-》权限管理-》覆盖锁屏显示-》你的APP-》始终允许。
5.小蓝伞-》权限管理-》开启移动数据、开启无线网络、访问移动数据、访问无线网络-》你的APP-》始终允许
6.屏幕下方按钮打开多任务界面,按住APP不动直到APP下面的红色叉变为一把锁,锁住APP不要被杀。
【技术分析】
消息延迟问题将大大缓解,当然,会费电一些,毕竟原先被休眠的程序无法被休眠了。
从安卓6.0开始加入了锁屏降频功能,同样在使用安卓7.1的Smartisan系统的时候发现几个有趣的经验总结下和大家分享:
1.通知机制。
针对每个APP,系统是默认是开启了通知限制的,默认策略就回导致推送有稍许的延迟,我黑盒分析了下前台Timer的处理手法,系统有2个档位的公共消息通知池,凡是APP抛出的消息都默认扔第一个池子里,间隔20秒统一冒泡一次。如果关掉“小蓝伞”里面的针对某APP的“省电优化”,则消息通知被抛到第二个消息池里, 这个池子里的消息推送是10秒一次的样子。也就是说, 在小蓝伞里面关闭省电优化,则可以保证APP推送消息会更及时一些,但是依然会有稍许延迟。目前没找到实时推送的开关。但是实时性已经有很大的好转了。
2.杀后台。
内存不满基本会不杀,满了如果也不想被杀,比如一些游戏,实在是懒得再loading一次,那么系统-》应用管理-》XX程序-》关闭“后台智能运行智能控制“。此机制也影响锁屏之后的推送。
省电模式明显开启之后对推送有统一的池管理机制。
每次亮屏幕都将唤醒后台所有APP一次,所以少亮屏则省电,频繁亮屏则非常费电。
每次息屏则立即对所有APP进行消息通知池管理。
以上所有省电机制对推送都有影响。