我想要一个事件每小时(5点,6点,7点,等等)开火.
我尝试用一个持久的后台服务一个线程,但它不是正确的解决方案,因为:
我尝试用一个持久的后台服务一个线程,但它不是正确的解决方案,因为:
>电池消耗
>服务终止,由于android内存管理
所以我正在使用AlarmManager.如果我在X秒内设置了一个闹钟(使用“set”方法)起作用.
但是,如何在每个小时的顶部重复一次事件(使用“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);