【问题标题】:difference between timer and alarmmanager定时器和报警管理器的区别
【发布时间】:2013-01-29 08:58:44
【问题描述】:

我对 Android 中使用的 TimerAlarmManager 有点困惑。

它们之间的主要区别是什么

他们都在安排一个任务在每 A 秒运行一次。首选使用它们的主要场景是什么?

例如,对于 X 情况,使用 Timer,但另一方面,对于 Y 情况,使用 AlarmManager

【问题讨论】:

    标签: java android


    【解决方案1】:

    Timer 将启动一个线程,该线程将跟踪何时启动您的代码。如果设备进入睡眠状态,计时器线程也会进入睡眠状态,您的代码也不会按时执行。另一方面,AlarmManager 的警报是内核级别的。根据您注册它们的方式,您可以请求唤醒设备,或在下次唤醒设备时执行。警报通常是可取的,并且使用较少的资源。

    【讨论】:

    • 添加到这个答案,文档说The Alarm Manager holds a CPU wake lock as long as the alarm receiver's onReceive() method is executing.This guarantees that the phone will not sleep until you have finished handling the broadcast. Once onReceive() returns, the Alarm Manager releases this wake lock.
    • 正确,但这并不意味着可以在onReceive() 中进行冗长的操作。如果您需要做任何可能需要一些时间的事情(磁盘或网络访问),您应该启动一个服务来完成这项工作(这反过来又必须根据需要使用唤醒锁)并尽快从onReceive()返回.
    • 是的,你是对的。如果我没记错的话,他可以使用 IntentService(因为我们可以从警报管理器启动服务),对吧?
    【解决方案2】:

    计时器启动一个服务,它非常频繁地执行代码,即使它实际上并没有做任何事情。

    另一方面,Alarmmanager 将启动一个始终在后台运行的服务,这是您想要使用它来安排您的代码在您的应用未打开时运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多