如何每小时拨打一个接收器?

时间:2012-04-14 17:35:49

标签: android time broadcastreceiver call hour

是否可以在每个新的小时开始时呼叫接收器?我有运行服务,我只需要在时间从例如五点到六点等变化时调用接收器?有什么方法可以做到吗?

2 个答案:

答案 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);

我假设你知道如何给接收者打电话。