Наблюдение за работой WorkManager, чтобы завершить работу - PullRequest
0 голосов
/ 18 июня 2020

Я поставил 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
                               }
                          }
                    }
                }
            });

1 Ответ

0 голосов
/ 18 июня 2020

это то же самое, что и lifeCycleOwner? Я поставил это вместо этого, потому что lifeCycleOwner здесь не распознается.

this означает, что ваш класс вы называете своим кодом. На самом деле, когда вы вызываете getWorkInfoByIdLiveData, он возвращается к LiveData, это означает, что он должен прослушивать Android Component, например Activity, Fragment ... Если ваш класс не реализует LifecycleOwner, вы можете использовать observeForever вместо observe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...