android - 如何在整点启动 AlarmManager?

标签 android alarmmanager

如何在最近的时间点启动 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/

相关文章:

android - 如何以编程方式在android中启动 map 应用程序以显示方向?

java - Xamarin searchview OnActionExpandListener

java - 闹钟 : repeat setAlarmClock()

android - 如何在 PendingIntents 中使用 requestCode

android - 如何在android中每天设置三次闹钟?

Android Studio - 'AlarmManager'的操作

android - 在繁忙的 UI 线程上运行 ProgressBar

java - Android - 带有指向 WebView 指针的 Javascript 接口(interface) - 如何在没有 memleak 的情况下实现它

Android 精确闹钟总是关闭 3 分钟

android - 无法解析符号 'AppCompatActivity' ,无法解析符号 'R' ,无法下载 support-compat.aar