在Android上使用RTC闹钟时让手机进入睡眠状态

时间:2011-05-24 14:47:57

标签: android alarmmanager

我一直在使用Android中的警报管理器看到一些奇怪的问题,尽管事实上我正在使用RTC(非唤醒)手机将以正确的重复间隔可靠地发送PendingIntents。

我的测试详情

  • 设备没有充电,只是在我睡觉时坐在床头柜上
  • 我的服务在重复间隔(30分钟,我知道极端)每次醒来时醒来
  • 该服务将其活动记录在一个文件中,以便我可以在早上阅读

根据我的理解,手机应该正在睡觉,除非我将其唤醒,并且在手机醒来之前不应发送我的警报。

  • 为什么我的服务正在执行?
  • 如果其他服务行为不当,并且使用警报的_WAKEUP变体,我的服务也会唤醒吗?
  • 我可以避免被其他服务吵醒,只是从用户开启屏幕时醒来吗?

2 个答案:

答案 0 :(得分:4)

  

为什么我的服务正在执行?

据推测,其他东西让设备在那些时刻保持清醒。

  

如果另一项服务行为不当,并且使用警报的_WAKEUP变体,我的服务也会唤醒吗?

是的,虽然“行为不端”是旁观者的眼睛。

  

我可以避免被其他服务唤醒,只是从用户开启屏幕唤醒吗?

不直接通过AlarmManager。您可以观看ACTION_SCREEN_OFFACTION_USER_PRESENT广播,也可以在这些广播之间停用闹钟。

答案 1 :(得分:0)

我花了一个小时试图找出为什么我的RTC警报发送PendingIntents即使我的手机正在睡觉。答案非常简单,因为它是用USB插入的,因此手机的状态为“充电”。

  

据推测,其他东西让设备清醒了   时刻。

很多带通知广告的应用程序(如AirPush,Leadbolt等)都会唤醒设备。