AlarmManager срабатывает не в конкретно заданное время, а спустя ~5 минут после заданного времени... Why? А так же срабатывает, если я его активирую по прошедствию времени. То есть, если он установлен на 10:00, и я его активирую в 11:00 то по идее он должен сработать завтра в 10:00, но он срабатывает сеюжеминутно. И сработает завтра в ~10:05
void setMorningAlarm(Context context){
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, morningId, intent, 0);
Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, 8);
time.set(Calendar.MINUTE, 0);
alarmManager.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
time.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pi);
Toast.makeText(context,"Morning Notify", Toast.LENGTH_SHORT).show();
}
Для точного срабатывания по времени используйте setRepeating() вместо setInexactRepeating.
По поводу немедленного срабатывания сегодня, если назначенное время сегодня уже в прошлом. Дело в том, что сделав, как описано у Вас в вопросе, например, в 11.00, Вы получаете просроченный Alarm, который немедленно выполняется. Так заложено в системе. Чтобы этого избежать проследите, чтобы время срабатывания было в будущем. Если оно уже в прошлом, прибавьте сутки. Например, так:
Calendar timeToFireAlarm = Calendar.getInstance();
timeToFireAlarm .set(Calendar.HOUR_OF_DAY, 8);
timeToFireAlarm .set(Calendar.MINUTE, 0);
Calendar now = Calendar.getInstance();
if(timeToFireAlarm.getTimeInMillis < now.getTimeInMillis())
timeToFireAlarm.add(Calendar.timeToFireAlarm, 1);
Продвижение своими сайтами как стратегия роста и независимости