android - AlarmManager 和 ScheduledExecutorService 的区别

标签 android scheduling alarmmanager

除了设置和精确时间(即午夜)与设置延迟(即 24 小时)之外,使用 AlarmManagerScheduledExecutorService 定期运行任务有什么区别?

就我而言,我需要运行一些代码来每晚检查新数据并在有新数据时创建新通知。

谢谢!

最佳答案

ScheduledExecutorService 在您的应用程序进程中运行。如果应用程序进程终止,则所有计划任务都不会运行。因此需要 Service(这样您的流程就超出了 Activities 生命周期的活跃部分)。

虽然 AlarmManager 是始终运行的关键系统服务。如果您的应用程序安排了一些事情并被杀死,那么 AlarmManager 可能会再次启动应用程序(通过 PendingIntent)。

这里没有人提到的最后一个主要区别是 AlarmManager 知道 WakeLock 和电源管理。这意味着 AlarmManager 可以在指定时间唤醒 Android 设备以运行计划任务。而 ScheduledExecutorService 对电源管理一无所知,只会在设备未处于深度 sleep 状态时启动任务(即它可能会错过时间)。

关于android - AlarmManager 和 ScheduledExecutorService 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6558694/

相关文章:

android - Flutter - 带有芯片的输入文本字段

Android 共享首选项

algorithm - 这种多处理器线程调度算法是否适用于所有情况?

linux - 如何查看线程在哪个 CPU 内核中运行?

android - 从 Android 的 AlarmManger 中删除特定的 ALARM

android - 警报管理器可靠性

android - 导航组件没有过渡选择下拉

java - 如何在 android ant 发布和调试构建期间附加不同的字符串资源文件?

php - 如何通过Linux服务器调用任何php类的方法

android - 要求alarmManager不要在屏幕上和顶部显示闹钟时间和图标