Как смоделировать кросс-фрагментную транзакцию (текущий процесс) в приложении Android MVVM?

Я разрабатываю приложение, в котором есть непрерывный процесс, от которого зависят почти все экраны. Назовем это ActiveTransaction. Итак, один фрагмент готовит товары, другой - оплату, третий добавляет скидки и т. Д. Если одна часть выходит из строя, все нужно откатить.

Итак, в принципе, мне нужно добиться атомарности нескольких фрагментов. Я пытался использовать для этого общую ViewModel, но, поскольку каждый фрагмент добавляет свой собственный материал, эта общая ViewModel стала слишком большой.

Итак, мне интересно, как лучше всего обрабатывать те процессы, которые растягиваются на несколько фрагментов. Должен ли я иметь, возможно, одноэлементный объект ActiveTransaction, который вводится в каждую модель представления? Может быть, это то, что другие технологии называют состоянием приложения?

Я ничего не нашел в рекомендациях по архитектуре MVVM.


person daneejela    schedule 12.01.2021    source источник
comment
если это общее состояние, то почему не репозиторий?   -  person Mark Keen    schedule 12.01.2021


Ответы (1)


Вы можете создать действие с вкладками - пустое действие с вкладками. Новый проект - ›Активность с вкладками.

У вас будет одно действие и несколько фрагментов. Таким образом, все функции будут в MainActivity. Ваши фрагменты будут содержать представления, которые будут вызывать методы из MainActivity. Все объекты и вычисления будут в основном активны, поэтому в случае сбоя (из-за нехватки памяти) все тоже рухнет.

Например:

У вас есть одно действие MainActivity с вкладками и 3 фрагмента: Item Fragment, PaymentFragment и DiscountFragment. MainActivity содержит несколько методов, скажем, prepareItems (), preparePayment (), addDiscount (). Пользователь может переходить по вкладкам, открывая фрагменты. Методы MainActivity можно вызывать только через фрагменты. Поэтому, если MainActivity рухнет, рухнет весь процесс.

Таким образом, вы достигнете атомарности, и пользователь сможет видеть изменения, просматривая вкладки. Вы можете заменить действие вкладок другим сценарием с одним действием и несколькими фрагментами, которые не имеют функциональности, но содержат представления, которые будут вызывать методы из MainActivity.

person Victor Pozdnyakov    schedule 12.01.2021