Android Alarmmanager多次启动

Android Alarmmanager多次启动,android,alarmmanager,Android,Alarmmanager,我以前问过这个问题,天知道我已经尝试了所有建议。我试图让一个服务每天在给定的时间执行一次。我可以设置闹钟和广播。但是由于某种原因,当警报被触发时,比如说13h30,它会以不规则的间隔被触发。唯一能正常工作的就是在正确的时间启动警报,但是它会在一整天都启动,这让我发疯。请帮忙 PendingIntent reviewsPendingIntent = PendingIntent.getBroadcast(this,0,new Intent(this,ReviewReceiver.class)

我以前问过这个问题,天知道我已经尝试了所有建议。我试图让一个服务每天在给定的时间执行一次。我可以设置闹钟和广播。但是由于某种原因,当警报被触发时,比如说13h30,它会以不规则的间隔被触发。唯一能正常工作的就是在正确的时间启动警报,但是它会在一整天都启动,这让我发疯。请帮忙

    PendingIntent reviewsPendingIntent = PendingIntent.getBroadcast(this,0,new Intent(this,ReviewReceiver.class),PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager)(this.getSystemService(Context.ALARM_SERVICE));
    Calendar cur_cal = new GregorianCalendar();
    cur_cal.setTimeInMillis(System.currentTimeMillis());

    Random random = new Random();
    int low = 7;
    int high = 22;
    int hour = random.nextInt(high - low) + low;
    int minute = random.nextInt(60 - 10) + 10;
    Calendar cal = new GregorianCalendar();
    cal.set(Calendar.HOUR_OF_DAY, 13);
    cal.set(Calendar.MINUTE,15);
    cal.set(Calendar.SECOND,5);
    cal.set(Calendar.MILLISECOND,0);
    if(cal.getTimeInMillis() >= System.currentTimeMillis() ) {
        Log.i(TAG,"Set today");
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, reviewsPendingIntent);
    }else{
        Log.i(TAG,"Set tomorrow");
        cal.set(Calendar.DATE,1);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, reviewsPendingIntent);
    }
注意,当我收到这个消息时,我打算用随机整数来设置我的警报 工作正常


您需要
cal.add(日历日期,1),而不是
校准设置(日历日期,1)。您也可以考虑使用<代码> ADB Shell DunPysActudio<代码>来查看是否有几个警报被调度。每次创建时都会调用您的报警代码,如果您正在使用该服务,它将再次被称为“添加时间<代码> <代码> >。启动一个警报只有额外的是与意图检查这一点,我刚刚做了,并通过警报列表,我发现我的应用程序的警报@我已确保不会在每次调用onCreate时重新创建报警。。我已经设置了一些标志来防止这种情况发生。你是否找到了解决问题的方法,因为我也面临着同样的问题。