Специализация
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 в телеграм
При повороте экрана нужно сохранить и изменить определённые данные в Presenter без ViewModel. На каком этапе жизненного цикла и как это сделать?
При повороте экрана Activity уничтожается и создаётся заново. В MVP можно сохранить данные в onSaveInstanceState(Bundle) Presenter-а через Bundle (через интерфейс Activity → Presenter) и восстановить в onCreate нового View, передав сохранившийся Bundle. Либо хранить Presenter с данными в setRetainInstance(true) у Fragment.
Как осуществляется передача данных между Interactor и Presenter?
Interactor передает данные в Presenter через метод протокола. Обычно это происходит с помощью структуры Response. Interactor не знает, как данные будут отображаться. Presenter получает результат бизнес-логики и подготавливает его для UI. Такое разделение делает код более понятным и тестируемым.
В каком виде Presenter получает данные от Interactor?
Presenter получает данные в виде Response-модели. Эта модель содержит результат бизнес-логики без привязки к UI. В ней нет форматирования для отображения. Presenter преобразует Response в ViewModel. Такой подход делает архитектуру более прозрачной и управляемой.
Как организовано взаимодействие View и Presenter в MVP?
В MVP View и Presenter взаимодействуют напрямую через интерфейсы. View передаёт пользовательские события Presenter, а Presenter обрабатывает логику и обновляет View. View обычно реализует протокол, который определяет методы обновления UI. Presenter не знает конкретной реализации View. Это делает код более тестируемым.
Как связаны View и Presenter в VIPER?
View и Presenter в VIPER связаны через протоколы. View хранит сильную ссылку на Presenter, а Presenter — слабую ссылку на View. View передаёт пользовательские события Presenter. Presenter обрабатывает их и обновляет View через интерфейс. Такая схема предотвращает retain cycle и делает код тестируемым.
Как решается проблема retain cycle между View и Presenter?
Рейтинг:
5
Сложность:
5
Проблема retain cycle решается использованием слабой ссылки (weak) со стороны Presenter на View. View продолжает хранить Presenter сильной ссылкой. Такая схема разрывает цикл владения. В результате оба объекта корректно освобождаются. Это стандартная практика в VIPER.
Рейтинг:
2
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
5
Рейтинг:
5
Сложность:
6