在 CountDownTimer 和 AlarmManager 之间有什么主要区别吗?我不是指语法或如何使用它们,而是想知道是否存在这样的任务,当您确定可以说我应该使用其中一个而不是另一个时?
举个简单的例子,我必须每分钟启动一些操作。我应该使用 CountDownTimer 还是 AlarmManager?这取决于什么?
在 CountDownTimer 和 AlarmManager 之间有什么主要区别吗?我不是指语法或如何使用它们,而是想知道是否存在这样的任务,当您确定可以说我应该使用其中一个而不是另一个时?
举个简单的例子,我必须每分钟启动一些操作。我应该使用 CountDownTimer 还是 AlarmManager?这取决于什么?
AlarmManager
通常用于当您的应用程序关闭或必须执行一些重复任务时。它也比Timer
或Handler
略微不够精确。
CountDownTimer
更多地用于在持续时间内运行特定任务(onFinish
),并定期更新直到执行完毕(onTick
)。
在您的特定情况下,我认为您应该使用AlarmManager
,因为它可以无限重复。例如,如果您想每秒执行一次某个操作10秒钟,请使用CountDownTimer
。
CountDownTimer
CountDownTimer
将在您的Activity上下文中运行。这意味着,如果您的应用程序不在前台,它可能随时被终止。
AlarmManager
一个完全不同的方法使用Sticky Intents,并告诉您的Receiver
在一段时间后执行某些操作。它不依赖于Activity的生命周期。
因此,如果您想每分钟执行一些操作,即使您的应用程序不在前台,那么您应该使用AlarmManager
,否则CountDownTimer
将为您完成工作。
如此处所述:
注意:闹钟管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。对于正常的定时操作(滴答声、超时等),使用Handler更容易且更有效。
因此,在您的情况下最好使用CountDownTimer,因为您不希望即使应用程序关闭也执行该操作。