假如我的安卓cpu进入了休眠状态,所以此时timer不能继续工作,这时我我添加了一个alarm用来定时唤醒cpu,那么我的timer会不会继续执行,或者说我的timer会不会在cpu睡眠后被删除
ps: 我在做这个东西的时候看到alarm在安卓5.1之后唤醒cpu或者说一次执行的时间被强制提升到了一分钟,所以这就导致我原本想要通过alarm来完成定时任务成为了不可能,但是timer又不能长时间在后台运行,因为他不能唤醒cpu
参考GPT和自己的思路:当安卓中的CPU进入睡眠状态后,Timer会被暂停,不会继续执行。当使用alarm来唤醒CPU时,Timer会在唤醒之后继续执行。Timer不会在CPU睡眠后被删除,只是暂停了执行,直到CPU被唤醒后才会继续执行。关于安卓5.1之后alarm执行时间被强制提升到一分钟的问题,这是安卓系统在节省电力方面做出的优化,但也带来了一些限制。如果要执行更短的任务,可以考虑使用其他工具或者自行编写代码实现。
当安卓CPU进入休眠状态时,程序中运行的Timer也会被暂停,因为Timer的工作依赖于CPU的运行。因此,添加一个alarm来定时唤醒CPU是一个好的解决方案。
当CPU被唤醒时,Timer将恢复其工作并继续执行。Timer不会被删除,但在CPU休眠期间,Timer的工作会被暂停。
需要注意的是,安卓5.1之后,alarm的执行时间被强制提升到一分钟,这可能会影响到定时任务的精度。如果需要更精确的定时任务,可以考虑使用其他的定时任务库或者使用Handler来实现。另外,需要注意在使用alarm时,要避免频繁唤醒CPU,以节省电量。
如果你期望每次都是按照你的设想响应定时任务:
小于 API 19 :
set、setRepeating、setInexactRepeating
大于等于 API 19 小于 API 23:
setWindow、setExact 、setAlarmClock
大于 API 23:
如果想要在低功耗空闲(又称doze)模式下使用
setAndAllowWhileIdle、setExactAndAllowWhileIdle、setAlarmClock
但是这样会更影响电池的使用时长,非必要可以不这么选择。