Я поставил PeriodicWork в очередь в WorkManager и хочу получать выходные данные его Worker каждый раз, когда он будет завершен, но следующий код, похоже, не работает, поскольку сообщение журнала не отображается в Logcat:
WorkManager.getInstance(getApplicationContext())
.getWorkInfoByIdLiveData(MyWork.getId())
.observe(this, new Observer<WorkInfo>() {
@Override
public void onChanged(@Nullable WorkInfo workInfo) {
Log.d("DEBUG", "onChanged()");
}
});
это this
то же самое, что lifeCycleOwner
? Я поставил this
вместо этого, потому что lifeCycleOwner
здесь не распознается.
На основе this и this .
ОБНОВЛЕНИЕ :
Мне удалось заставить Observer работать так:
WorkManager.getInstance(getApplicationContext())
.getWorkInfosByTagLiveData(MY_WORK_TAG).
observeForever(new Observer<List<WorkInfo>>() {
@Override
public void onChanged(@Nullable List<WorkInfo> workInfos) {
Log.d("DEBUG", "onChanged()");
if (workInfos != null && (!(workInfos.isEmpty()))) {
for (WorkInfo wI: workInfos) {
if (wI.getState() == WorkInfo.State.RUNNING) {
\\ handle workinfo here
}
}
}
}
});