У меня есть Worker и WorkManager, который запрашивает PeriodicJobRequest. В MainActivity я инициализирую работника и все мышью одним нажатием кнопки.
Я также делаю это:
WorkManager.getInstance(context).getWorkInfoByIdLiveData(changeWallpaperRequest.getId()).observe( owner , new Observer<WorkInfo>() {
@Override
public void onChanged(WorkInfo workInfo) {
WorkInfo.State state = workInfo.getState();
Log.d("StateOfWork", "State is : " + state);
if(state == WorkInfo.State.CANCELLED || state == WorkInfo.State.FAILED || state == WorkInfo.State.BLOCKED) {
if(!closedByUser)
{
WorkInfo.State temp = WorkManager.getInstance(context).getWorkInfoByIdLiveData(changeWallpaperRequest.getId()).getValue().getState();
if( temp != WorkInfo.State.SUCCEEDED && temp!= WorkInfo.State.ENQUEUED)
WorkManager.getInstance(context).enqueue(changeWallpaperRequest);
showNotification(context,"Work closed by system " + state.toString() );
}
if(closedByUser) {
closedByUser = false;
showNotification(context,"Work closed by user " + state.toString());
}
}else{
//WorkInfo.State state = workInfo.getState();
Log.d("StateOfWork2", "State is: " + state);
showNotification(context,"Work status changed: " + state.toString());
}
}
});
Я хочу наблюдать за работником, пока приложение находится в фоновом режиме (потому что я думаю, Android продолжает отменять мой работник - и я хочу перезапустить рабочий, если это произойдет), но поскольку LifeCycleOwner в методе наблюдения установлен на MainActivity, как только я выхожу из приложения, метод останавливается.
Можно ли как-нибудь посмотреть мою работу, даже если приложение закрыто?