您的位置:首页 > 移动开发 > Android开发

关于Doze 模式下对AlarmManager 的影响

2016-06-14 09:41 330 查看


引言:

Android6.0为了对耗电性能的大幅提升 引入了Doze模式【打盹 极省电】模式。 

屏幕不操作将会自动进入 Doze模式。但有时客户需要在Doze模式下 

启动一些AlarmManger 发送点广播啥的,这个时候很多 AlarmManager将直接失效。


关于Doze模式:

设备将进入休眠模式。在休眠状态下,


系统将通过以下两种方式来节省电量: 

限制app访问网络 限制大量占用Cpu的Service 

并且阻止APP访问网络,推迟APP的任务,同步和标准闹钟。


解决办法:

setAndAllowWhileIdle() 

setExactAndAllowWhileIdle(). 


提供了新的Api可以从Doze模式下唤醒,继续广播。但此函数也有弊端:


此函数的弊端

setAndAllowWhileIdle()和setExactAndAllowWhileIdle()存在的弊端。
只能在15分钟唤醒一次,如果你的广播需要1分钟广播很多次,也只能15分钟一次。


setAndAllowWhileIdle函数时间间隔的太长的解决方法:

真扯淡,搞个setAndAllowWhileIdle。只能15分钟唤醒一次。
答案是肯定的:有!可以采用方法:setAlarmClock()
**setAlarmClock** 将不会受Doze模式。那么他的弊端呢?
所以必须在节约电量和业务之间做个取舍,
没有没有更好的方法。如果你必须要在15分钟内多次唤醒
就用**setAlarmClock**不过此方法呢就是耗电!!**没错耗电**!


总结

没有完美的解决方案拉。。。。。扯。。
。[/code]
ps:感觉此篇文章对你有所帮助,帮忙给我赞助一杯咖啡!!!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 性能