Изучение

Жизненный цикл и владение

Состояния PresenterSession, переходы Model, обновление представления, завершение и граница владения бизнес-объектами.

v0.1.0-dev.1Продвинутый уровень

Жизненный цикл и владение

Один экземпляр Presenter принадлежит одной сессии.

text
created → active → closing → closed

Порядок подключения

  1. Создать Presenter и подключить начальную Model.
  2. Подписаться на обновления и эффекты.
  3. Запустить сессию и один раз вызвать onModelAttached.
  4. Построить первый ViewState.

Подписка до start() обязательна: onModelAttached вправе запросить обновление представления или опубликовать начальный эффект.

Переходы Model

updateModel(current) сохраняет новую Model перед вызовом onModelChanged(previous, current). Каждый сигнал создаёт переход. Ark MVP не отбрасывает равные Model, поскольку правила равенства приложения могут не учитывать важную для представления информацию.

Обновление ViewState

Размещающий компонент повторно обращается к Presenter при изменении Model, после invalidateView() или при изменении окружения представления. buildViewState только вычисляет данные: внутри него нельзя отправлять команды, открывать новый экран или публиковать эффекты.

Завершение

close() один раз вызывает closePresenter() и закрывает выходные каналы даже при ошибке очистки. Закрытый Presenter нельзя подключить повторно: иначе устаревшее состояние и подписки перейдут в другой жизненный цикл функции.

Владельцы ресурсов

РесурсВладелец
UseCase, менеджер состояния, координатор RepositoryКомпозиция приложения
ModelBindingОбъект, создавший binding
Presenter и его локальные ресурсыPresenterSession или MvpView
Flutter-контроллеры и анимацииОтрисовывающий StatefulWidget

Закрытие View завершает Presenter, но не бизнес-источники из ModelBinding.

ARKTELOS

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