【发布时间】:2012-10-10 19:40:09
【问题描述】:
CountDownTimer 和 AlarmManager 之间有什么主要区别吗?我不是指语法或如何使用它,而是想知道是否有这样的任务,当您肯定可以说我应该使用其中一个而不是另一个时?
简单的例子,我必须每分钟启动一次动作。我应该使用什么? CountDownTimer 还是 AlarmManager?怎么看?
【问题讨论】:
标签: android alarmmanager countdowntimer
CountDownTimer 和 AlarmManager 之间有什么主要区别吗?我不是指语法或如何使用它,而是想知道是否有这样的任务,当您肯定可以说我应该使用其中一个而不是另一个时?
简单的例子,我必须每分钟启动一次动作。我应该使用什么? CountDownTimer 还是 AlarmManager?怎么看?
【问题讨论】:
标签: android alarmmanager countdowntimer
AlarmManager 通常用于您的应用程序已关闭或必须execute some repeating task(s) 的用途。它也比Timer 或Handler 的精确度稍差。
CountDownTimer 更多地用于在一段时间内运行特定任务 (onFinish),并定期更新直到它执行 (onTick)。
在您的具体情况下,我相信您应该使用AlarmManager,因为它可以无限重复。例如,如果您希望每秒执行 10 秒,请使用 CountDownTimer。
【讨论】:
CountDownTimer
CountDownTimer 将在您的 Activity 上下文中运行。意味着它可以随时被杀死,如果您的应用程序不在前台。
AlarmManager
一种完全不同的方法使用粘性意图。并在一段时间后告诉你的Receiver。它不依赖于Activity的生命周期。
因此,如果您想每分钟执行一些操作,即使您的应用程序不在前台,那么您应该使用AlarmManager,否则CountDownTimer 将为您完成这项工作。
【讨论】:
如here 所述:
注意:警报管理器适用于您希望应用程序代码在特定时间运行的情况,即使您的应用程序当前未运行。对于正常的计时操作(滴答声、超时等),使用 Handler 更容易、更高效。
因此,在您的情况下,最好使用 CountDownTimer,因为即使应用程序关闭,您也不想执行此操作。
【讨论】: