0

是否可以仅在每个新小时开始时呼叫接收方?我有正在运行的服务,只有在时间从五点到六点等变化时才需要打电话给接收者?有什么办法吗?

4

2 回答 2

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
于 2012-04-14T17:41:28.593 回答
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);

我假设您知道如何呼叫接收方。

于 2012-04-14T17:48:39.087 回答