Почему тревоги не работают при настройке на следующий день и в течение долгих часов, когда устройство неактивно в течение длительного времени, тревоги не срабатывают - PullRequest
0 голосов
/ 15 мая 2018

Calendar calendars = Calendar.getInstance();
                        calendars.setTimeInMillis(System.currentTimeMillis());
                        calendars.set(Calendar.HOUR_OF_DAY, hour);
                        calendars.set(Calendar.MINUTE, min);
                        calendars.set(Calendar.SECOND, 0);
                        calendars.set(Calendar.MILLISECOND, 0);
                        calendars.set(Calendar.AM_PM, timezone);
                        
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), currentTime, intent, PendingIntent.FLAG_UPDATE_CURRENT);


if (Build.VERSION.SDK_INT < 23) {
                        if (Build.VERSION.SDK_INT >= 19) {
                            alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendars.getTimeInMillis(), pendingIntent);
                        } else {
                            alarmManager.set(AlarmManager.RTC_WAKEUP, calendars.getTimeInMillis(), pendingIntent);
                        }
                    } else {
                        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendars.getTimeInMillis(), pendingIntent);
                    }

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

Я много искал в связи с проблемой тревоги, с которой мы сталкиваемся, и обнаружил, что в последних обновлениях Android ОС Android убивает приемники вещания, если требуется память для другой задачи ИЛИ в разряженном состоянии ИЛИ без причины.

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

Вы можете проверить ссылки ниже.

1) https://www.fusonic.net/en/blog/why-my-broadcastreceiver-does-not-get-called/

2) sendWakefulWork не всегда вызывается с помощью cwac-wakeful-1.1.0

3) Тревога в Android прекращается по прошествии нескольких часов

4) https://stackoverflow.com/a/42468819

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

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

а. VIVO mobile - настройки - дополнительные настройки - Приложение - автозапуск - Включить автозапуск для вашего приложения.

б. Redmi mobile - приложение безопасности> разрешения> автозапуск - включить автозапуск для вашего приложения.

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

После этого все еще не работают утренние будильники на некоторых устройствах, таких как Redmi note 4, samsung s3

В других устройствах сработали альтернативные сигналы тревоги. пример- если я установлю 3 будильника на 7,8,9 только 2-3 работали.

Android OS тоже убивает сервисы BG? Пожалуйста, помогите.

...