【问题标题】:What is the difference between RTC and RTC_WAKEUP of AlarmManagerAlarmManager 的 RTC 和 RTC_WAKEUP 有什么区别
【发布时间】:2015-02-01 12:20:04
【问题描述】:

您好,我正在阅读有关 AlarmManager 的这两个常量的 android 文档,但没有得到它们之间的确切区别。

System.currentTimeMillis() 中的 RTC 闹钟时间(UTC 挂钟时间)。

RTC_WAKEUP System.currentTimeMillis() 中的闹钟时间(UTC 挂钟时间),它会在设备关闭时唤醒设备。

当设备处于睡眠模式时,RTC 不会唤醒设备并触发PendingIntent 吗?

提前致谢。

【问题讨论】:

标签: android alarmmanager


【解决方案1】:

当设备处于睡眠模式时,RTC 不会唤醒设备并触发 PendingIntent 吗?

RTCELAPSED_REALTIME 不会将设备从睡眠模式中唤醒。如果设备在事件发生时处于睡眠模式,则不会立即发生任何事情。当设备因其他原因(例如,用户按下电源按钮)唤醒时,您将收到有关错过事件的通知。

RTC_WAKEUPELAPSED_REALTIME_WAKEUP 会将设备从睡眠模式中唤醒。如果您的 PendingIntent 是广播 PendingIntent,Android 将保持设备唤醒足够长的时间,以便 onReceive() 完成。如果您在onReceive() 中有不想做的重要工作(因为在主应用程序线程上调用了onReceive()),您将需要安排让设备保持足够长的唤醒时间以完成您的某些服务工作,例如使用WakefulBroadcastReceiver

【讨论】:

  • 当我从 BroadcastReciever 运行服务时,我应该在这些情况下使用 WakefulBroadcastReceiver 吗?
  • @Williams:如果您使用_WAKEUP 样式的警报,并且您希望设备在您的服务处理某些事务时保持唤醒,那么可以。
  • 如果我不这样做会发生什么?
  • @Williams:设备可能会在您完成工作之前重新进入睡眠状态。
  • 是的,假设我在那里进行网络操作并且设备重新进入睡眠状态,那么这个网络操作会失败还是成功?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2010-10-02
  • 2011-12-12
  • 2010-09-16
  • 2012-03-14
  • 2012-02-06
相关资源
最近更新 更多