Ниже приведен код моего метода MainActivity onCreate(), в котором я установил будильник для запуска службы ScheduleAlarm сразу и только один раз. sPrefs - объект SharedPreference, который заботится об установке этого сигнала тревоги только один раз. Сервис ScheduleAlarm - это IntentService, который отлично срабатывает.Настройка тревоги из другого сигнала тревоги с использованием класса AlarmManager, который не срабатывает правильно
if(sPrefs.getBoolean("SettingAlarmForFirstTime",true)) {
//Creating alarm for showing notifications.
Calendar calendar = Calendar.getInstance();
//calendar.setTimeInMillis(System.currentTimeMillis());
//calendar.set(Calendar.HOUR_OF_DAY, 8);
Intent intent = new Intent(MainActivity.this, ScheduleAlarms.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);//Use AlarmManager.INTERVAL_DAY instead of int number here.
editor.putBoolean("SettingAlarmForFirstTime", false);
editor.commit();
}
Теперь это мой сервисный класс ScheduleAlarms. Когда эта служба запущена по методуHandleIntent(), вызывается из того, где я вызываю метод setWeeklyAlarms(). Теперь моя проблема изнутри этого метода. Я хочу установить 7 аварийных сигналов для полной недели на основе таймингов, которые я получу от вызова сервера API. Сейчас я не могу даже полностью выполнить один сигнал. Тревога, которую я устанавливаю, запускается после 3-секундной задержки, которая вызовет другую услугу с именем NotificationService, но аварийные сигналы запускаются немедленно, вместо того, чтобы ждать 3 секунды. Пожалуйста, проанализируйте и скажите мне, почему это происходит.
public class ScheduleAlarms extends IntentService {
private boolean notificationsEnabled = true;
private String notificationTimings = "";
public ScheduleAlarms() {
super("ScheduleAlarms");
}
@Override
protected void onHandleIntent(Intent intent) {
setWeeklyAlarm();
}
private void setWeeklyAlarm() {
Intent i = new Intent(ScheduleAlarms.this, NotificationService.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getService(ScheduleAlarms.this, 10001, i, 0);
AlarmManager alarmManager = (AlarmManager) ScheduleAlarms.this.getSystemService(Context.ALARM_SERVICE);
/* Установка этого alarmManager разжигать тревогу после задержки 3 минуты, но эта тревога увольняют немедленно */
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 3*60*1000, pendingIntent);
}
}
проверить мой ответ ниже. Полный код находится здесь: https://github.com/Shiza1aas/dailyQuranVerses/blob/master/app/src/main/java/com/example/shiza/dailyquranverses/MainActivity.java – learner