我正在创建一个应用程序来连接BT设备来收集健康数据(即:体温)。
传感器周期性的睡眠和唤醒只在有限的时间窗口连接。
我曾尝试创建AlarmManager,它使用setExactAndAllowWhileIdle()触发前台服务,并且按预期工作时间超过9分钟,
但在9分钟以下,它会进入打瞌睡模式,不会触发AlarmManager BroadcastReceiver。
从文档中,我不明白向电池优化白名单中添加应用程序是否允许AlarmManager触发更多的案例
例如,白名单上的应用程序的作业和同步将被推迟(在API级别23及以下),并且它的常规AlarmManager警报不会触发。
正常的警报是什么?setExactAndAllowWhileIdle()是正则的吗?
如有任何澄清,将不胜感激。
编辑:
我知道setExactAndAllowWhileIdle()会在打瞌睡模式下触发超过9分钟的事件,问题是在白名单中添加应用程序是否会让它更频繁地触发?
发布于 2018-07-18 10:17:14
正常的警报是什么?setExactAndAllowWhileIdle()是正则的吗?
不是的。setExactAndAllowWhileIdle()是不正常的。常规警报可以是通过AlarmManager ()和setWindow()设置的警报。
但在9分钟以下,它会进入打瞌睡模式,不会触发AlarmManager BroadcastReceiver。
它对你设置警报的频率有限制。
基于文档
为了减少滥用,对于特定的应用程序,这些警报发出的频率是有限制的。在正常的系统操作下,它将不超过每分钟发出这些警报(此时每个这样的待定警报都发出);当处于低功耗空闲模式时,时间可能会大大延长,例如15分钟.。
您可以参考打瞌睡限制,它说:
标准的AlarmManager警报(包括setExact()和setWindow())被推迟到下一个维护窗口。
白名单的:
白名单中可用的应用程序部分不受Doze和App备用优化的限制。这并不意味着他们可以在打瞌睡模式下完全访问并执行任务。白名单的应用程序可以在Doze和App备用期间使用网络并持有部分唤醒锁。然而,其他的限制,如不同的工作,标准警报触发器仍在实施。
注意:,你应该用检查可接受的用途来白名单一个应用程序。
Google政策禁止应用程序请求直接豁免安卓6.0+ (Doze和App备用)的电源管理功能,除非该应用的核心功能受到不利影响。
https://stackoverflow.com/questions/51399353
复制相似问题