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

dal*_*liz 9 android repeat alarmmanager

我想要每小时开一次活动(5:00,6:00,7:00等).我尝试使用线程的持久后台服务,但它不是正确的解决方案,因为:

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

所以我正在尝试使用AlarmManager.如果我将警报设置为在X秒内触发(使用"set"方法),它就可以工作.但是如何在每小时的顶部重复一次事件(使用"setRepeating"方法),直到警报被取消?

谢谢!

Pen*_*m10 16

设置警报时,您有两次:第一个触发时间和下一个触发间隔.

然后,您必须计算下一个小时的剩余毫秒数,然后为重复间隔设置一个小时.

// 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);
Run Code Online (Sandbox Code Playgroud)

  • 这段代码似乎有点不清楚.c来自哪里?为什么是创造的,然后从未使用过? (6认同)