как заставить мой AlarmManager работать на всех телефонах

#java #android #alarmmanager #scheduler

Вопрос:

Я перепробовал множество кодов и примеров, но я не нашел решения, чтобы мои сигналы тревоги работали на всех телефонах, потому что на некоторых телефонах, когда приложение уничтожается, сигналы тревоги полностью уничтожаются, некоторые, когда я снова открываю приложение, все существующие сигналы тревоги начинаются сначала. Правда ли, что мое приложение должно быть в белом списке? Каково же решение? Тем не менее, в Play Store есть приложения, которые хорошо работают

   @RequiresApi(api = Build.VERSION_CODES.M)
    private void setAlarm() {
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this,AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(this,0,intent,0);
            alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        Toast.makeText(this,"Alarm set Seccussfely",Toast.LENGTH_SHORT).show();
    }
 

Комментарии:

1. Сигналы тревоги удаляются при перезагрузке устройства, но не при отключении приложения. Вы можете использовать adb shell dumpsys alarm для просмотра (большого количества) информации о зарегистрированных сигналах тревоги

2. В моем телефоне он удаляет сигналы тревоги, когда он убивает приложение Как я могу использовать сигнал тревоги adb shell dumpsys

3. adb -это инструмент командной строки, входящий в состав Android SDK, в platform-tools каталоге. Выполнение adb (или adb.exe ) с помощью команды shell dumpsys alarm выводит список известных аварийных сигналов. Вы можете, например, проверить до и после завершения работы приложения, чтобы убедиться, что ваш будильник действительно удален, что было бы странно

4. Я изучу эту тему , спасибо

Ответ №1:

Вместо AlarmManager необходимо использовать WorkManager. AlarmManager-это старый механизм для Android версии до 6.0

Комментарии:

1. Как я могу указать рабочему менеджеру точное время для работы?