#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