Изучение
Наблюдаемые данные и жизненный цикл
Доставка с повтором последнего значения, порядок событий, ошибки, закрытие и владение ресурсами.
Наблюдаемые данные и жизненный цикл
data синхронно возвращает последнее зафиксированное значение. stream — широковещательный Stream с повтором последнего значения: новый слушатель сначала получает текущее значение, а затем последующие фиксации.
Порядок
Публикация асинхронна. Значения ставятся в очередь в порядке принятия, а обратный вызов никогда не выполняется в стеке вызова setData. Фиксация данных из слушателя не приводит к его рекурсивному повторному входу.
Состояние, а не журнал событий
Stream представляет актуальные бизнес-данные. Он не является долговечным журналом и не гарантирует однократную доставку. Для истории событий нужен транзакционный Outbox, Event Store или другой устойчивый механизм.
Закрытие
close() идемпотентен: запрещает новые фиксации, вызывает closeRepository(), завершает текущие подписки и оставляет последнее значение доступным через data. Repository не закрывает общие DataSource только потому, что они находятся в его контейнере.
Порядок завершения: binding → UseCase и прикладные сервисы → Repository → DataSource и технические клиенты.