我想让一个事件每小时触发一次(在 5:00、6:00、7:00 等......)。我尝试使用带有线程的持久后台服务,但它不是正确的解决方案,因为:
- 电池消耗
- 服务终止,由于 android 内存管理
所以我正在尝试使用 AlarmManager。如果我将警报设置为在 X 秒内触发(使用“设置”方法),它会起作用。但是我怎样才能在每小时的顶部重复一个事件(使用“setRepeating”方法),直到闹钟被取消?
谢谢!
我想让一个事件每小时触发一次(在 5:00、6:00、7:00 等......)。我尝试使用带有线程的持久后台服务,但它不是正确的解决方案,因为:
所以我正在尝试使用 AlarmManager。如果我将警报设置为在 X 秒内触发(使用“设置”方法),它会起作用。但是我怎样才能在每小时的顶部重复一个事件(使用“setRepeating”方法),直到闹钟被取消?
谢谢!
当您设置警报时,您有两次:第一次触发时间和下一次触发间隔。
然后,您必须计算到下一小时的剩余毫秒数,然后将重复间隔设置为一小时。
// 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);