Я пытаюсь периодически запускать службу, даже если приложение убито или находится в фоновом режиме с помощью workManager.
Мой класс RequestService приведен ниже: -
public class RequestService extends Worker {
public RequestService(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
displayNotification("MY Worker", "Background work Started");
Log.i("BackJob","Running");
return Result.SUCCESS;
}
private void displayNotification(String title, String task){
NotificationManager notificationManager = (NotificationManager)getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("MyApp","My Notifications",
NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder notification = new NotificationCompat.Builder(getApplicationContext(), "My Notifications").
setContentTitle(title).setContentText(task)
.setSmallIcon(R.mipmap.ic_launcher);
notificationManager.notify(130, notification.build());
}}
Это основной код активности: -
final PeriodicWorkRequest WorkReq = new PeriodicWorkRequest.Builder(RequestService.class,15,TimeUnit.MINUTES).build();
WorkManager.getInstance().enqueue(WorkReq);
Проблема в том, что если приложение убито или находится в фоновом режиме, то рабочий менеджер перестает работать.
Я тестирую это на устройстве Samsung с Android версии пирога.
PS: - если приложение открыто, то я вижу уведомления непрерывно через 15 минут .... однако, как только я закрываю приложение ..... оно перестает работать ..... и больше нет уведомлений