Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Есть четыре ViewModel, и нужно каждые 5 секунд подписываться на запрос из сети. Как это лучше организовать?
Лучше запускать единственный Flow или LiveData в одном ViewModel, который внутри viewModelScope с помощью flow {} и delay(5000) эмитит результат каждые пять секунд. Остальные три ViewModel могут делегировать подписку на общий источник данных (SharedFlow или отдельный синглтон-репозиторий), чтобы не создавать дубли HTTP-запросов и экономить ресурсы.
При повороте экрана нужно сохранить и изменить определённые данные в Presenter без ViewModel. На каком этапе жизненного цикла и как это сделать?
При повороте экрана Activity уничтожается и создаётся заново. В MVP можно сохранить данные в onSaveInstanceState(Bundle) Presenter-а через Bundle (через интерфейс Activity → Presenter) и восстановить в onCreate нового View, передав сохранившийся Bundle. Либо хранить Presenter с данными в setRetainInstance(true) у Fragment.
Как устроена связь View и ViewModel в MVVM?
В MVVM View подписывается на изменения состояния ViewModel. ViewModel не знает о существовании View и не управляет UI напрямую. Связь обычно реализуется через биндинги, замыкания или реактивные фреймворки. View только отображает текущее состояние. Это снижает связанность и упрощает тестирование.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
6