如何在一小时之内启动AlarmManager?

Ada*_*dam 1 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);
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 5

创建日历实例时,其时间是当前时间.在你的例子中12:32.然后你添加一个小时的一天.现在是13:32.您需要将分钟(和秒)设置为0:

cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);  // well ...
Run Code Online (Sandbox Code Playgroud)