如何在最近的时间点启动 AlarmManager?例如,当用户点击按钮并且时间是 12:32 时,我想在 13:00 开始服务然后每小时重复一次,我试过这段代码,但它不起作用,它只在一个小时后启动 AlarmManager,所以如果时间是 12:32,它会在 13:32 开始服务。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)+1);
AlarmManager alarm = (AlarmManager)myService.this.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(myService.this, AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(BatteryService.this, 0, i, 0);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60, pIntent);
最佳答案
当您创建日历实例时,它的时间就是当前时间。在你的例子中是 12:32。然后你将一个小时加到一天中。现在是 13:32。您需要将分钟(和秒)设置为 0:
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0); // well ...
关于android - 如何在整点启动 AlarmManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10276472/