2017-08-12 89 views
3

的我有一个定期运行,以保持网络连接活动的方法区分。在打盹模式下,我想禁止它定期运行,并在维护窗口中正好运行一次。当设备退出打盹时,我希望再次定期调用该方法。我怎样才能做到这一点?如何将设备进入打盹维护窗口,并走出打盹

我注册了一个接收器,用于收听PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED广播,然后拨打PowerManager.isDeviceIdleMode()。但是,这两种情况都会返回false - 在维护窗口期间以及设备退出打盹模式时。我怎样才能区分它们?

回答

0

我面临着同样的问题,虽然我认为Android必须由接收器发送不同的状态区分这或提供的功能会问这样的状态,我没有发现任何相关的。

记住,回去当了一段9-10分钟的时间后,打瞌睡的ACTION_DEVICE_IDLE_MODE_CHANGED再次发射。

的解决方案将是:

设备的当前状态 - > “打盹IDLE”

当您收到ACTION_DEVICE_IDLE_MODE_CHANGED和isDeviceIdleMode()是假的 您的状态是 “出瞌睡怀疑” -DO你的方便窗口工作,并在将来设置闹钟15分钟。

上的下一个模式改变。

如果ACTION_DEVICE_IDLE_MODE_CHANGED在警报和isDeviceIdleMode()为true之前触发,那么这是一个Mantenience窗口。 “不打瞌睡”, (关闭闹钟)。

如果报警率先打响,这意味着它是一个“出瞌睡真正的证实”,用于“瞌睡的”在报警

瞌睡的时机是在文档 -Do您的设置。一定要先检查一下。 (未来可能会发生变化,因为已经发生了*可能有一个不变的价值 - 我不知道)。

我认为这是一个黑客,而不是一个完整的解决方案fedged。但它的工作原理,直到任何未来的扩展工作在android上提供另一个调用ACTION_DEVICE_IDLE_MODE_CHANGED,“打瞌睡”的状态。

相关问题