RxJava Наблюдаемый поток внутри doWork WorkManager's Worker - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть процесс синхронизации с несколькими связанными Observables, которые я хотел бы вызвать в качестве фоновой службы в определенное время.

Раньше я делал это в Сервисе с тех пор, но с ограничением Android Oreo это больше невозможно, поэтому вместо выбора Планировщика заданий + JobDispatcher для обратной совместимости (минимум поддерживаемых SDK - 19) я изменил Сервис класс с рабочим (androidx.work).

Q1: Как я могу сделать так, чтобы результат doWork запускался только после закрытия потока (/ сделать его синхронно)?

Q2: мне нужно вручную закрыть весь поток (избавиться от подписки на синхронизацию) на конкретное действие, выполненное пользователем.

Я попытался сделать это в обратном вызове onWorkFinished, заданном классом Worker, но поскольку doWork возвращает Result до завершения потока, это не вариант. Я мог бы ввести работника туда, где мне нужно это сделать, но возвращать Результат до того, как вся работа выполнена, тоже не похоже на хорошую практику.

Любые предложения приветствуются. Спасибо!

...