Где хранить сложные данные в навигационном приложении - PullRequest
0 голосов
/ 27 января 2020

У меня есть приложение, которое содержит много данных, которые мне нужны между страницами, таких как: настройки дизайна, пользовательские параметры, доступ к сканеру, очередь печати, несколько вещей, которые были рассчитаны и сформированы на одной странице и будут использоваться на остальные.

Общая идея приложения такова: вы быстро выбираете параметры или вводите данные на каждой странице, а затем формируете заказ, отправляете и распечатываете его.

У меня есть несколько репозиториев. для разных вещей, но я не могу получить доступ к ним из фрагментов назначения.

Я довольно новичок в Android, поэтому я пытаюсь найти лучший способ построить эту систему но не в состоянии сделать это. Что я нашел до сих пор:

  • Комната - я так не думаю. Я честно пробовал это в течение нескольких недель, но загрузка и сохранение данных невыносимо медленны, особенно когда это просто куча страниц меню, переворачивающих одну за другой. Кроме того, мне не нужно сохранять данные локально между сеансами, так что это как бы пропускает точку локальной базы данных.

  • Отправка простых строк / чисел между фрагменты - сериализация / десериализация всего, что мне нужно для каждого меню, звучит не очень хорошо.

  • фабрика ViewModel - таким образом, вам нужно создавать и хранить ViewFactory где-то, а затем получить доступ к нему из каждого фрагмента, а затем построить новую ViewModel с ним. Вид может сработать, но выглядит странно. Как это должно работать? У нас есть ссылка на Factory в «основной» ViewModel, а затем мы получаем ссылку на виртуальную машину этого «основного» приложения, читаем Factory и затем инициализируем локальный фрагмент VM?

  • ViewModel одного большого приложения - звучит неправильно: слишком большой, слишком громоздкий.

  • Singleton (s) - это просто печально.

  • Внедрение зависимостей - Я еще не пробовал Кинжал (собираюсь, прямо сейчас). Это то, что я ищу?

Я пытался много гуглить на этом топи c, но все ответы выглядят так: «вот как передать простую строку между экранами », как люди организуют более сложные приложения? Может быть, есть более изощренный способ разбить состояние приложения на некоторые виды услуг или другие пропущенные мной термины.

Не могли бы вы помочь мне понять правильную архитектуру приложения с точки зрения состояния и данных?

...