#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. Как я могу указать рабочему менеджеру точное время для работы?