打ze模式,电池优化白名单,AlarmManager的频率超过9分钟

时间:2018-07-18 10:12:50

标签: android alarmmanager android-doze

我正在创建一个与BT设备连接以收集健康数据(即:体温)的应用。

传感器会定期睡眠,并且仅在有限的连接时间内唤醒。

我尝试创建AlarmManager来使用setExactAndAllowWhileIdle()触发前台服务,并且它可以正常工作超过9分钟,

但在9分钟以下会进入打ze模式,并且不会触发AlarmManager BroadcastReceiver。

从文档中我不了解是否将应用添加到电池优化白名单中将使AlarmManager触发更多攻击 https://developer.android.com/training/monitoring-device-state/doze-standby#support_for_other_use_cases

  

例如,列入白名单的应用程序的作业和同步被推迟(在API级别23及以下),并且其常规AlarmManager警报不会触发

常规警报是什么?是setExactAndAllowWhileIdle()正常的吗?

任何澄清将不胜感激

编辑:

我知道setExactAndAllowWhileIdle()会在打ze模式下触发事件超过9分钟,问题是将应用添加到白名单是否会使其触发频率更高

1 个答案:

答案 0 :(得分:2)

  

常规警报是什么?是setExactAndAllowWhileIdle()常规的吗?

不。 setExactAndAllowWhileIdle()不正常。常规警报可以是通过setExact()和setWindow()设置的AlarmManager警报。

  

但在9分钟以下会进入打do模式,并且不会触发AlarmManager   BroadcastReceiver

它对您设置警报频率的限制。

基于documentation

  

为减少滥用,对这些警报的频率进行了限制   将针对特定的应用程序。在正常系统下   操作中,将不会比每次发出更多的警报   分钟(在该时间点,将发出每个此类待处理的警报); 何时   在低功率空闲模式下,此持续时间可能会大大延长,   例如15分钟。

您可以参考Doze restrictions,其中指出:

  

标准AlarmManager警报(包括setExact()和setWindow())   推迟到下一个维护窗口。

     
      
  • 如果您需要设置在打ze睡时触发的警报,请使用setAndAllowWhileIdle()或setExactAndAllowWhileIdle()。
  •   
  • 通过 setAlarmClock()设置的警报继续正常触发-在这些警报触发之前,系统会立即退出Doze。
  •   

对于白名单:

白名单中可用的应用部分不受Doze和App Standby优化的影响。这并不意味着他们拥有完全的访问权限,并且可以在打ze模式下执行任务。被列入白名单的应用程序可以在Doze和App Standby期间使用网络并持有部分唤醒锁。但是,仍然会施加其他限制,例如工作不同,标准警报触发

注意:您应该check acceptable usecases将应用列入白名单。

  

Google Play政策禁止应用请求直接豁免   从Android 6.0+(打ze和App Standby)中的电源管理功能获得   除非该应用的核心功能受到不利影响。