首页 > 解决方案 > 如何让 Android AlarmManager 执行 setWindow 但在空闲时允许?

问题描述

即使设备处于空闲状态并且处于打盹模式,我也需要一种在时间窗口内运行某些东西的方法。似乎 AlarmManger 的 setExactAndAllowWhileIdle 可以解决问题。但是,我想节省电池,我不需要它在确切的时间运行,一个窗口就可以了。从我所做的阅读来看,如果设备在窗口期间处于打盹模式,我认为 AlarmManager 的 setWindow 不会启动任何操作。虽然我不需要它在确切的时间运行,但我确实需要它在窗口期间运行,即使它处于空闲状态。

有没有一种通用的方法可以做到这一点?

我曾想过使用我的 windowStart 和 windowLength 做一个 setWindow,然后为 windowStart+windowLength 做一个 setExactAndAllowWhileIdle。如果调用了 setWindow(设备没有空闲),那么我会让它取消 setExactAndAllowWhileIdle。但是有没有更好的方法来实现这一点?

我也考虑过 WorkManager,但如果我可以接受的时间窗口是在设备空闲/打瞌睡期间,它不会运行,直到打瞌睡结束。

标签: androidalarmmanagerandroid-workmanager

解决方案


推荐阅读