Com*_*ish 14 android scheduling alarmmanager
除了设置和准确的时间(即午夜)与设置延迟(即24小时)之外,使用AlarmManager和ScheduledExecutorService定期运行任务之间的区别是什么?
就我而言,我需要运行一些代码来检查每晚的新数据,并在有新数据时创建新通知.
谢谢!
ina*_*ruk 36
ScheduledExecutorService在您的申请过程中运行.如果应用程序进程终止,则不会运行任何计划任务.因此需要Service(因此您的流程超出了生命周期的活动活动部分).
虽然AlarmManager是一直运行的关键系统服务.如果您的应用程序安排了某些事情并被杀死,那么AlarmManager可以再次启动应用程序(通过PendingIntent).
这里没有人提到的最后一个主要区别就是AlarmManager知道WakeLocks和电源管理.这意味着AlarmManager可以在指定时间唤醒Android设备以运行计划任务.虽然ScheduledExecutorService对电源管理一无所知,但只会在设备未处于深度睡眠状态时启动任务(即它可能会错过时间).
Com*_*are 11
ScheduledExecutorService只有在您Service运行所有时间的某个组件(例如a)时才会起作用.因此,它应仅用于组件由于其他原因而在内存中的情况下,为用户增加价值.将一个组件放在内存中仅仅是为了观察时钟滴答是浪费,这也是用户用任务杀手等攻击开发人员的原因之一.
AlarmManager是OS提供的系统服务.它可以在时间到来时启动一个组件.因此,您不需要运行组件.
就我而言,我需要运行一些代码来检查每晚的新数据,并在有新数据时创建新通知.
这是一个明确的情景AlarmManager.
我认为ScheduledExecutorService这与您的流程有关,并且在您的流程被杀死时无法运行.相反,AlarmManager它由操作系统管理,因此即使您的应用程序未运行,它也能正常工作.