У меня есть процесс синхронизации с несколькими связанными Observables, которые я хотел бы вызвать в качестве фоновой службы в определенное время.
Раньше я делал это в Сервисе с тех пор, но с ограничением Android Oreo это больше невозможно, поэтому вместо выбора Планировщика заданий + JobDispatcher для обратной совместимости (минимум поддерживаемых SDK - 19) я изменил Сервис класс с рабочим (androidx.work).
Q1: Как я могу сделать так, чтобы результат doWork запускался только после закрытия потока (/ сделать его синхронно)?
Q2: мне нужно вручную закрыть весь поток (избавиться от подписки на синхронизацию) на конкретное действие, выполненное пользователем.
Я попытался сделать это в обратном вызове onWorkFinished, заданном классом Worker, но поскольку doWork возвращает Result до завершения потока, это не вариант. Я мог бы ввести работника туда, где мне нужно это сделать, но возвращать Результат до того, как вся работа выполнена, тоже не похоже на хорошую практику.
Любые предложения приветствуются. Спасибо!