Как установить мульти AlarmManager с разным временем - PullRequest
0 голосов
/ 24 октября 2019

Привет всем, я пытаюсь установить несколько AlarmManager с другим временем, и с помощью этого кода

public void StartAppNotifications( String title ,int h ,int m ) {

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, h);
        calendar.set(Calendar.MINUTE, m);
        calendar.set(Calendar.SECOND, 0);


        if (!calendar.before(Calendar.getInstance())) {

            Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
            intent.putExtra("title", title);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

    }

это работает один раз, если этот метод вызывается один раз, но если он вызывался более одного раза, он не работает, я пытаюсь назвать его следующим образом

StartAppNotifications("alarm text" ,18 ,30);

1 Ответ

0 голосов
/ 25 октября 2019

Из doc о AlarmManager, когда вы устанавливаете второй сигнал тревоги, который использует то же самое ожидающее намерение, он заменяет исходный сигнал тревоги

Поэтому вам нужно использовать разные PendingIntent для каждогоиз ваших повторяющихся сигналов, например, с помощью флага PendingIntent.FLAG_ONE_SHOT для создания PendingIntent

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_ONE_SHOT);
...