AlarmManager – 如何在每小时的顶部重复闹钟?

我想要一个事件每小时开火(在5点,6点,7点等…)。 我尝试了与一个线程的持久背景服务,但它不是正确的解决scheme,因为:

  • 电池消耗
  • 服务终止,由于android内存pipe理

所以我想用AlarmManager。 如果我设置一个闹钟在X秒钟内触发(使用“set”方法),它将起作用。 但是我怎样才能在每个小时的顶部重复一个事件(使用“setRepeating”方法),直到报警被取消?

谢谢!

Solutions Collecting From Web of "AlarmManager – 如何在每小时的顶部重复闹钟?"

当您设置闹钟有两个时间:第一个触发时间和下一个触发时间间隔。

然后你必须计算剩余的毫秒到下一个小时的顶部,然后为重复间隔设置一个小时。

// We want the alarm to go off 30 seconds from now. long firstTime = SystemClock.elapsedRealtime(); firstTime += remainingMilisecondsToTopHour; long a=c.getTimeInMillis(); // Schedule the alarm! AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.ELAPSED_REALTIME, c.getTimeInMillis(), 1*60*60*1000, sender);