Многократные тревоги с AlarmManager

Я в настоящее время в конце моего остроумия.

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

Ниже функции проверяет установленный в правило и ищет правила, у которых есть время критерии. В тех случаях это поставит будильник в течение каждого отобранного дня и установит его как повторяющийся (каждые 7 дней).

Я прочитал некоторые сообщения о значении многократных тревог (вопреки единственной). Я думал бы, что принял следующее во внимание:
- Используя новое Намерение для каждой тревоги
- Используя новый PendingIntent для каждой тревоги
- Используя различный запрос кодируют для каждой тревоги

Кодексы запроса собраны в ArrayList, таким образом, другая функция может очистить все тревоги, когда программа выходит.

Теперь проблема: Мои тревоги не будут стрелять. Я смог разыскать ошибку к этой функции. Случай AlarmManager прекрасен. Я настраиваю испытательную тревогу в самом основании (после линии со звездочками). Это стреляет. Почему???

clearAlarms();
int i=0;    
ArrayList allRulesWithTimeFrames = new ArrayList();
allRulesWithTimeFrames = Rule.findRuleCandidatesByTimeFrame();
for(Rule oneRule : allRulesWithTimeFrames)
{
    for(Trigger oneTrigger : oneRule.getTriggerSet())
    {
        if(oneTrigger.getTriggerType() == Event_Enum.timeFrame)
        {
            Calendar calNow, calSet;
            Time setTime;

            if(oneTrigger.getTriggerParameter())
                 setTime = oneTrigger.getTimeFrame().getTriggerTimeStart();
            else
                 setTime = oneTrigger.getTimeFrame().getTriggerTimeStop();

            calNow = Calendar.getInstance();            
            calSet = (Calendar) calNow.clone();
            calSet.set(Calendar.HOUR_OF_DAY, setTime.getHours());
            calSet.set(Calendar.MINUTE, setTime.getMinutes());
            calSet.set(Calendar.SECOND, 0);
            calSet.set(Calendar.MILLISECOND, 0);
           //At this point calSet would be a scheduling candidate. It's just the day the might not be right, yet.

            long milliSecondsInAWeek = 1000 * 60 * 60 * 24 * 7;

            for(int dayOfWeek : oneTrigger.getTimeFrame().getDayList())
            {
               //--------------------
               //Here's a lot of code I will spare you. It only changes
               //the variable calSetWorkingCopy.
               //--------------------

                SimpleDateFormat sdf = new SimpleDateFormat("E dd.MM.yyyy HH:mm");
                i++;
                String calSetWorkingCopyString = sdf.format(calSetWorkingCopy.getTime()) + " RequestCode: " + String.valueOf(i);
                Miscellaneous.logEvent("i", "AlarmManager", "Setting repeating alarm because of rule: " + oneRule.getName() + " beginning at " + calSetWorkingCopyString);

                Intent alarmIntent = new Intent(automationServiceRef, AlarmListener.class);
                PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(automationServiceRef, i, alarmIntent, 0);
                centralAlarmManagerInstance.setInexactRepeating(AlarmManager.RTC_WAKEUP, calSetWorkingCopy.getTimeInMillis(), milliSecondsInAWeek, alarmPendingIntent);
                requestCodeList.add(i);
            }
         }
    }
}

       //************* The below code is working *************
   //get a Calendar object with current time
    Calendar cal = Calendar.getInstance();
   //add 5 minutes to the calendar object
    cal.add(Calendar.SECOND, 10);
    SimpleDateFormat sdf2 = new SimpleDateFormat("E dd.MM.yyyy HH:mm");
    String calSetWorkingCopyString2 = sdf2.format(cal.getTime());
    Miscellaneous.logEvent("i", "AlarmManager", "Setting repeating alarm because of hardcoded test: beginning at " + calSetWorkingCopyString2);
    Intent alarmIntent2 = new Intent(automationServiceRef, AlarmListener.class);
    PendingIntent alarmPendingIntent2 = PendingIntent.getBroadcast(automationServiceRef, 0, alarmIntent2, 0);
    centralAlarmManagerInstance.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 5000, alarmPendingIntent2);
    requestCodeList.add(0);
0
nl ja de

1 ответы

Попытайтесь заменить это

PendingIntent alarmPendingIntent2 = PendingIntent.getBroadcast(automationServiceRef, 0, alarmIntent2, 0);

с этим

PendingIntent alarmPendingIntent2 = PendingIntent.getBroadcast(automationServiceRef, 0, alarmIntent2, PendingIntent.FLAG_CANCEL_CURRENT);
0
добавлено
Спасибо за ваше предложение. Я был под своего рода нехваткой времени и изменил программу тот способ, которым я только поставил один будильник за один раз и установил следующий во время onReceive (). That' s, оказалось, был довольно надежен.
добавлено автор Jens, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)