Установите повторный будильник в определенное время каждый день

Я пытаюсь использовать диспетчер будильников для запуска будильника в определенное время каждый день. я использую этот код

Intent intent = new Intent(AlarmSettings.this, AlarmService.class);
                        intent.putExtra("i", i);
PendingIntent mAlarmSender = PendingIntent.getService(AlarmSettings.this, Id, intent, 0);

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),Calendar.getInstance().getTimeInMillis()+(24*60*60*1000), mAlarmSender);}

проблема заключалась в том, что если значение cal.getTimeInMillis() находится в прошлом, будильник запускается немедленно, я не знаю почему, и когда значение cal.getTimeInMillis() находится в будущем, оно работает правильно в свое время.

Мне нужно, чтобы он запускался в определенное время каждый день.


person Yasser-Farag    schedule 29.10.2011    source источник


Ответы (2)


Похоже, ваш звонок

setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

Попробуйте установить правильный triggerAtTime (в будущем) - например

Calendar.getInstance().getTimeInMillis()+(24*60*60*1000)

Третий параметр (интервал), очевидно, должен быть вашим интервалом, например

24*60*60*1000
person Yar    schedule 29.10.2011
comment
спасибо, я понял, что я должен установить triggerAtTime в будущем нет в пасете - person Yasser-Farag; 29.10.2011

Это мне очень помогло, у меня был случай, когда я также использовал минуты и придумал следующую небольшую поправку:

/* Create calendar and set desired time before this*/

// Compare the current time milliseconds with the desired calendar time milliseconds
if (java.util.Calendar.getInstance().getTimeInMillis() >= 
            calendar.getTimeInMillis() ) {
    calendar.add(Calendar.DAY_OF_YEAR, 1);
}
person Michael Hiatt    schedule 28.04.2017