Не могу поверить, что спрашиваю об этом, но я хочу запланировать уведомления в своем приложении для Android (повторяется или нет).
Мне удалось сделать это легко, следуя статье об обучении Android, используя WakefulBroadcastReceiver
и Service
s. Но теперь, поскольку я должен нацелить последние Android API для своих будущих обновлений, я должен внести некоторые изменения в мой код.
Я считаю, что WakefulBroadcastReceiver
было устарело , поэтому вместо этого я использую простой BroadcastReceiver
.
Текущая реализация
Всякий раз, когда я хочу запланировать будильник, я отправляю Intent
на мой BroadcastReceiver
, и в методе onReceive
вместо старого вызова на startWakefulService(context, service);
я выполняю context.startService(service);
. Но с фоновыми ограничениями я не могу запустить службу, когда мое приложение находится в фоновом режиме ...
У меня ошибка: java.lang.IllegalStateException: не разрешено запускать службу: приложение в фоновом режиме
Как эффективно изменить свой код для решения этой проблемы? Служба, которую я вызываю, - это та, которая отправляет уведомления пользователю.
Код
Установить будильник
Intent broadcastIntent = new Intent(context, AlarmReceiver.class);
// put the extras for the notification details
// ...
alarmIntent = PendingIntent.getBroadcast(context, idNotif, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
millis, interval, alarmIntent);
Intent
получено в AlarmReceiver
классе
// onReceive method
context.startService(service); // The ERROR is raised here when my app is in bg
EDIT
Я не могу использовать JobScheduler
, так как это не гарантирует, что уведомления будут отправлены вовремя.
Я не могу запустить службу переднего плана, чтобы отправлять свои уведомления.