在基于导航的应用程序中存储复杂数据的位置

问题描述 投票:0回答:1

我有一个应用,在页面之间有很多我需要的数据,例如:设计设置,用户参数,扫描仪访问权限,打印机队列,在页面上计算并形成并在其他页面上使用的多项内容。

该应用程序的总体思想是:您可以在每个页面上快速选择选项或输入数据,然后形成订单,发送并打印。”>

我有几个用于存储不同内容的存储库,但是我无法从目标片段中访问它们。

我对Android来说还很陌生,所以我试图找到构建此系统的最佳方法,但没有这样做。我到目前为止发现的内容:

  • Room

    -我不这么认为。老实说,我试了好几个星期,但是加载和保存数据的速度实在令人难以忍受,特别是当一堆菜单页面一个接一个地翻动时。另外,我不需要在会话之间本地保存数据,因此它会丢失本地数据库的要点。
  • 在片段之间发送一些简单的字符串/数字

  • -每个菜单所需的所有内容的序列化/反序列化听起来都不是很好。
  • ViewModel factory

  • -这样,您需要在某个地方创建和存储ViewFactory,然后从每个片段中访问它,然后使用它构建一个新的ViewModel。可能有些工作,但看起来很奇怪。应该如何运作?我们在“主” ViewModel中有一个到Factory的链接,然后得到了到这个“主”应用程序的VM的链接,读取了工厂,然后初始化了本地片段的VM?
  • [一个大应用程序的ViewModel

  • -听起来不正确:太大,太笨重。
  • Singleton(s)

  • -很难过。
  • 依赖项注入

  • -我还没有尝试Dagger(现在就去)。是我要找的东西吗?

    我曾尝试在这个主题上使用Google进行大量搜索,但所有答案都看起来像:“这是在屏幕之间传递简单字符串的方法”,人们如何组织更复杂的应用程序?也许有一种更复杂的方法可以将应用程序状态拆分为我所缺少的某种服务或其他术语。

请您帮助我了解有关状态和数据的适当应用程序体系结构吗?

我有一个应用程序,需要在页面之间包含很多数据,例如:设计设置,用户参数,扫描仪访问权限,打印机队列,在一页上计算并形成的多项内容...

java android navigation components viewmodel
1个回答
0
投票

我认为您的解决方案是在会话实现(在内存中或使用Room)和屏幕依赖于另一部分的ViewModel之间。如果是流程,我建议您使用一种方式在ViewModelthis之类的片段之间共享this(我使用并推荐),然后将其设置为流程其余部分的状态,导致共享数据在某些配置更改后仍然存在。如果您需要在整个应用程序执行过程中都能保留的设置,则应使用简单的类单例或Room实施来实现会话。

© www.soinside.com 2019 - 2024. All rights reserved.