是否可以在每个新的小时开始时呼叫接收器?我有运行服务,我只需要在时间从例如五点到六点等变化时调用接收器?有什么方法可以做到吗?
答案 0 :(得分:1)
您需要使用AlarmManager
。然后安排您希望它通知您的时间。谷歌更多的例子。
更新:
你可以做的是在下一个小时将其唤醒,如果时间是7.30,则在8.00。然后在下次开始时每小时唤醒它。
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR,c.get(Calendar.HOUR)+1);
c.getTimeInMillis(); // use this in alarmmanager for the first time, 60*60*1000 from next time
答案 1 :(得分:0)
您可以使用GregorianCalendar和AlarmManager的组合。你基本上加1小时到当前时间,然后向下舍入到最近的小时。请看这里的例子:
long UPDATE_INTERVAL = 60 * 60 * 1000; // 1 hour in milliseconds.
Calendar c = new GregorianCalendar(); // Get current time
c.add(Calendar.HOUR_OF_DAY, 1); // Add one hour to the current time.
// Set minutes, second, millisecond to 0, such that we ensure that an update is done
// at the end of the hour.
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(ALARM_SERVICE);
// Set an alarm, starting from the end of the current hour, every hour, to execute
// the update service.
// pIntent is the pending intent you would like activate.
alarm.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), UPDATE_INTERVAL, pIntent);
我假设你知道如何给接收者打电话。