实时消失的警报管理器立即开火并每4小时重复一次

时间:2014-05-19 07:20:17

标签: android alarmmanager

如何设置重复闹钟,以便在按下按钮时立即触发并每4小时重复一次。?

alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),   
4*60*60*1000, alarmIntent);

重复自身,但在按下按钮时不立即启动。火需要5分钟。

我在这里做错了什么?

我更改了以下代码并立即触发警报

alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, AlarmManager.INTERVAL_FIFTEEN_MINUTES, 4*60*60*1000, alarmIntent);

但每4小时不重复一次。如何每4小时重复一次报警?

2 个答案:

答案 0 :(得分:0)

使用setRepeating代替setInexactRepeating

当您希望闹钟在指定时间内触发时使用setInexactRepeating,但实际上并不需要它在此时准确触发。

此方法的存在使得Android Os可以设法同时触发所有警报以节省电池寿命。

看一下this问题,它可能对您有帮助。

引用接受的答案:

  

您应该使用AlarmManager.setExact()安排闹钟,然后在下周警告触发器再次执行警报,依此类推。

答案 1 :(得分:0)

这可能是因为您使用的是setInexactRepeating

来自谷歌的documentation setInexactRepeating

  • 您的闹钟首次触发不会在请求的时间之前,但是 在此之后几乎整整一段时间内可能不会发生。在 另外,重复报警的整个周期将为 要求,任何两次连续发出警报之间的时间 可能会有所不同。如果您的应用需要非常低的抖动,请使用 setRepeating(int,long,long,PendingIntent)代替。

尝试:

alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()+2*1000,   
4*60*60*1000, alarmIntent);

并检查它是否至少在2秒后发射.. 不确定它是否能解决您的问题,但可能会引导您解决问题。