В Android framework мы должны выполнять всю трудоемкую работу в фоновом потоке. Это звучит просто, но поверьте мне, реализация – это боль. Если вы используете kotlin, вы можете использовать doAsync или сопрограмму но если вы используете RxJava, вы можете добиться этого без особых изменений в вашем коде. У меня есть вариант использования, когда я должен загружать данные файлы в фоновом режиме с помощью WorkManager. Что ж, вот тут и возникает проблема: “Мы должны загрузить все изображения, а затем вернуть результат успеха или неудачи или повторить попытку менеджеру работ”. Как нам удерживать поток до завершения загрузки? Первоначально я решил это с помощью CountDownLatch, я внедрил и получил рабочий код с этим. Но это был грязный код.
Если вы используете RxJava, мы можем сделать это с помощью оператора “blocking Get()”, для этого ваша наблюдаемая должна быть “Single”.
Если вы используете RxJava, мы можем сделать это с помощью оператора “blocking Get()”, для этого ваша наблюдаемая должна быть “Single”.
Оригинал: “https://dev.to/balakrishnanpt/rxjava-make-your-async-task-synchronous-2f3n”