【问题标题】:How frequently are ACTION_BATTERY_CHANGEDs sent, in real devices?在真实设备中多久发送一次 ACTION_BATTERY_CHANGED?
【发布时间】:2015-11-19 10:59:44
【问题描述】:
在模拟器中,如果我将power capacity 设置为与当前值不同的值,我的BroadcastReceiver 的onReceive 将使用新值调用。 (我已经注册ACTION_BATTERY_CHANGED。)
在实际设备中,电池在几天内从 100% 放电到 20%,我的 onReceive 方法是否会被调用:
- 正好 80 次,
- 超过 80 次或
- 少于 80 次?
Re:可能的重复问题 - 我也担心处理程序没有被足够频繁地调用。我也没有犯过从另一个广播接收器中注册广播接收器的错误。
【问题讨论】:
标签:
android
batterymanager
【解决方案1】:
似乎最常见的行为是恰好发送 80 条消息,但有些设备会发送更多或更少的消息。这在实际设备之间差异很大,因此必须针对您将使用的特定设备进行基准测试,或者在一般情况下进行处理。
对于我使用过的大多数设备,ACTION_BATTERY_CHANGED 在这种情况下将被发送 80 次。 (插入和拔出设备时也会发送 Intent。)
但是,对于少数型号,每次电池温度变化时都会发送消息。这可能会非常频繁地发生,尤其取决于平板电脑的处理量。我正在凭记忆工作,但我相信 Verizon Ellipsis 7 平板电脑的行为是这样的。
此外,有些设备显然每改变 1% 的电池电量就发送不到一次消息。 Here 是消息更频繁的示例,here 是消息较少的示例。
【解决方案2】:
Android 不保证这一点,例如。在电池从 100% 放电到 80% 之间,系统不保证每放电 1% 就会发送 20 个事件。许多参数都被考虑在内。你可以找到简单的解释 here
如果您想跟踪电池放电,请及时进行池化。来自系统的事件数量可能因设备而异。