gpt4 book ai didi

java - 在基于导航的应用程序中将复杂数据存储在何处

转载 作者:行者123 更新时间:2023-12-01 18:40:53 24 4
gpt4 key购买 nike

我有一个应用程序,其中包含页面之间需要的大量数据,例如:设计设置、用户参数、扫描仪访问、打印机队列、在一页上计算和形成并将在其他页面上使用的多项内容。

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

我有几个用于不同内容的存储库,但我不知道如何从目标 fragment 访问它们。

我对 Android 还很陌生,所以我试图找到构建这个系统的最佳方法,但没有成功。到目前为止我发现了什么:

  • 房间 - 我不这么认为。老实说,我尝试了几个星期,但加载和保存数据的速度慢得令人难以忍受,尤其是当它只是一堆菜单页面一个接一个地翻转时。另外,我不需要在 session 之间本地保存数据,因此它有点错过了本地数据库的意义。

  • 在 fragment 之间发送一些简单的字符串/数字 - 每个菜单所需的所有内容的序列化/反序列化听起来不太好。

  • ViewModel 工厂 - 这样您需要在某处创建并存储 ViewFactory,然后从每个 fragment 访问它,然后用它构建一个新的 ViewModel。有点可能有用,但看起来很奇怪。应该如何运作?我们在“主”ViewModel 中有一个指向 Factory 的链接,然后获取此“主”应用程序 VM 的链接,读取工厂,然后初始化本地 fragment 的 VM?

  • 一个大型应用程序的 ViewModel - 听起来不太对:太大、太笨重。

  • 单例 - 这太可悲了。

  • 依赖注入(inject) - 我还没有尝试过Dagger(现在就尝试)。这是我要找的东西吗?

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

您能否帮助我从状态和数据方面理解正确的应用程序架构?

最佳答案

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

关于java - 在基于导航的应用程序中将复杂数据存储在何处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59933745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com