Последствия использования Flow.asLiveData()

#kotlin #kotlin-coroutines #android-livedata #kotlin-flow

Вопрос:

Наша команда недавно внедрила поток Kotlin в наши проекты для Android.

Насколько я понимаю, одним из недостатков потоков в Android является то, что он не является программным обеспечением LifeCycleAware. Вот почему мы продолжаем использовать LiveData для привязки состояний представлений и данных к нашим представлениям. Простой способ использовать и то, и другое-позволить нашим запросам на номера возвращать потоки. Таким образом, как только наши данные будут преобразованы и мы захотим связать их с представлениями, мы сможем использовать функцию asLiveData ().

Теперь мой вопрос: что-то с постоянным приведением к LiveData кажется мне неправильным. Это правильный путь? имеет ли значение кастинг в LiveData? И не лучше ли нам использовать запрос на дубликат комнаты, который возвращает версию LiveData?

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

Ответ №1:

Одним из недостатков является то, что он вводит зависимость платформы от Android, где вы ее используете (например, ViewModels).

Но вместо этого вы можете использовать StateFlows или SharedFlows , и когда вы его используете, вы можете привязать подписку к жизненному циклу, сделав ее ориентированной на жизненный цикл. Таким образом, Издатель/Поток не знает о жизненном цикле, но ваш Наблюдатель/Подписчик знает.

Хорошая статья об этом: https://medium.com/androiddevelopers/a-safer-way-to-collect-flows-from-android-uis-23080b1f8bda