gpt4 book ai didi

android - 如何区分进入 Doze 维护窗口和退出 Doze 的设备

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:11 24 4
gpt4 key购买 nike

我有一个定期运行以保持网络连接有效的方法。在打瞌睡模式下,我想禁止它定期运行并在维护窗口期间只运行一次。当设备退出 Doze 时,我希望再次定期调用该方法。我怎样才能做到这一点?

我已经注册了一个接收器来监听 PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED 广播,然后调用 PowerManager.isDeviceIdleMode()。但是,这两种情况都返回 false - 在维护窗口期间和设备退出打盹模式时。我如何区分它们?

最佳答案

我遇到了同样的问题,虽然我认为 android 必须通过在接收器中发送不同的状态或提供询问这种状态的功能来区分这一点,但我没有发现任何相关的东西。

请记住,在 9-10 分钟后返回休眠状态时会再次触发 ACTION_DEVICE_IDLE_MODE_CHANGED。

解决方案是:

当前设备状态 -> “打瞌睡”

当您收到 ACTION_DEVICE_IDLE_MODE_CHANGED 并且 isDeviceIdleMode() 为 false 时你的状态是“出于打瞌睡的怀疑”-让您的维护窗口正常工作并设置一个 15 分钟后的闹钟。

关于下一次模式更改。

如果在警报之前触发 ACTION_DEVICE_IDLE_MODE_CHANGED 并且 isDeviceIdleMode() 为真,则它是一个维护窗口。“打瞌睡是假的”,(关闭闹钟)。

如果警报先被触发,这意味着它是“out of doze true confirmed”-在警报中设置“打瞌睡”

打瞌睡的时间在文档中。一定要先检查一下。 (将来可能会改变,因为已经发生了 * 可能有一个常量来获得该值——我不知道)。

我认为这是一个 hack,而不是一个完整的解决方案。但它一直有效,直到 android 上的任何 future 扩展工作提供对 ACTION_DEVICE_IDLE_MODE_CHANGED 的另一个调用,状态为“out of doze”。

关于android - 如何区分进入 Doze 维护窗口和退出 Doze 的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45649269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com