4

最近一直在做Android应用后台线程中重复任务的调度。我从 AlarmManager 开始,但由于它在指定的时间间隔触发不准确,我决定使用其他 JAVA 和 Android API。

我从 Timer 开始,然后是 ScheduledExecutorService,最后是 ScheduledThreadPoolExecutor。

Timer 的问题在于它并不总是以正确的时间间隔运行所有后台任务。我用它来运行 3 个后台重复任务,其中只有 2 个被触发。第三个任务是在几个小时后触发的,为了赶上之前的所有未命中,它在 10 毫秒内触发(尽管间隔是 5 分钟)

ScheduledThreadPoolExecutor 在触发重复的后台任务时更加准确。但它的问题是当设备处于睡眠模式(屏幕关闭)时它不会触发后台任务。Handler.postDelayed() 的行为也是如此,它在设备处于睡眠模式时暂停任务的执行。

现在,我已经走到了死胡同。我正在寻找一种解决方案,可以帮助我同时运行我的后台任务,并且不会因设备进入睡眠模式而造成任何中断。

请指教。

4

0 回答 0