除了设置和精确时间(即午夜)与设置延迟(即 24 小时)之外,使用 AlarmManager
和 ScheduledExecutorService
定期运行任务有什么区别?
就我而言,我需要运行一些代码来每晚检查新数据并在有新数据时创建新通知。
谢谢!
最佳答案
ScheduledExecutorService
在您的应用程序进程中运行。如果应用程序进程终止,则所有计划任务都不会运行。因此需要 Service
(这样您的流程就超出了 Activities 生命周期的活跃部分)。
虽然 AlarmManager
是始终运行的关键系统服务。如果您的应用程序安排了一些事情并被杀死,那么 AlarmManager
可能会再次启动应用程序(通过 PendingIntent
)。
这里没有人提到的最后一个主要区别是 AlarmManager
知道 WakeLock
和电源管理。这意味着 AlarmManager
可以在指定时间唤醒 Android 设备以运行计划任务。而 ScheduledExecutorService
对电源管理一无所知,只会在设备未处于深度 sleep 状态时启动任务(即它可能会错过时间)。
关于android - AlarmManager 和 ScheduledExecutorService 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558694/