报警管理器 - 设置重复 - INTERVAL_DAY根本没有触发

时间:2015-10-07 09:15:58

标签: android alarmmanager repeatingalarm

我正设法在每天下午2:20设置闹钟。这是代码

Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY,14);
        calendar.set(Calendar.SECOND,20);

        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent pendingIntent;
        Intent intentService = new Intent(context, DownloadService.class);

        //setting alarm to run at 2:20 pm
        pendingIntent= PendingIntent.getService(context,0,intentService,PendingIntent.FLAG_UPDATE_CURRENT);
           alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);

当我使用5*60*1000作为间隔的值时,它可以正常工作。但是当我使用AlarmManager.INTERVAL_DAY时,它并没有消失。有人能告诉我上面的代码是否正确吗?感谢。

2 个答案:

答案 0 :(得分:0)

我认为您只是在INTERVAL_DAY中监督说明:

  

可识别的不精确重复间隔   运行时 setInexactRepeating (int,long,long,PendingIntent)   API 19之前的Android。

在您的代码中使用 setRepeating而非setInexactRepeating AlarmManager.INTERVAL_DAY

以下是intervalMillis参数的区别:

setRepeating

  

intervalMillis以后续重复之间的间隔(以毫秒为单位)   警报。

setInexactRepeating

  

intervalMillis以后续重复之间的间隔(以毫秒为单位)   闹钟。在API 19之前,如果这是其中之一   INTERVAL_FIFTEEN_MINUTES,INTERVAL_HALF_HOUR,INTERVAL_HOUR,   INTERVAL_HALF_DAY或INTERVAL_DAY然后报警   与其他警报相位对齐以减少唤醒次数。   否则,将设置警报,就像应用程序已调用一样   setRepeating(int,long,long,PendingIntent)。从API 19开始,全部   重复警报将是不精确的,并与其他人进行批处理   警报,无论其规定的重复间隔如何。

希望我能帮助你好运!

答案 1 :(得分:0)

只需替换此行:

calendar.set(Calendar.SECOND,20);

这一行:

calendar.set(Calendar.MINUTE,20);