android-architecture-components - 在 android 应用程序中在哪里创建存储库对象?
问题描述
您如何以及在哪里在您的 android 应用程序中创建存储库对象?
您是否将存储库实现为单例?它是一个静态类吗?
我正在尝试使用单一活动方法:
显然我想在每个 ViewModel 中使用相同的存储库。但是您选择了哪种方法,或者哪种方法更有意义让您的存储库只存在一次并且可以从任何地方访问它?
在 android 开发者示例中,他们在 mainactivity 中创建存储库对象,因为他们需要应用程序对象来创建存储库。但是在这个例子中,你不能从任何地方访问它,你可以出于同样的原因创建多个,例如处理 SQL。
解决方案
您是否阅读了本指南,应用架构指南?我想这会回答你的大部分问题。
实际上,您不应该从任何地方访问存储库,而是从 ViewModels 甚至更好地从 UseCases(域层,看看 Clean Architecture)访问存储库。
ViewModel 将数据获取过程委托给一个新模块,即存储库。存储库模块处理数据操作。它们提供了一个干净的 API,以便应用程序的其余部分可以轻松检索这些数据。他们知道从哪里获取数据以及在数据更新时调用什么 API。您可以将存储库视为不同数据源(例如持久模型、Web 服务和缓存)之间的中介。
要管理组件之间的依赖关系,您可以使用一些 DI 库。
推荐阅读
- scheme - 为什么我得到一个“>:违反合同,预期:真实?给定',3错误”?
- bash - 使用 bash 读取特定文本并保存到 .txt
- azure - 应用之间的 Azure Web 应用访问限制
- javascript - HTML向后包含脚本
- firebase - Firestore:显示用户未注册的事件列表
- javascript - Prisma 迁移导致数据丢失
- python - 使用 asyncio 并发写入多个文件
- django - 使用 Django models.FileField 从内存中读取文件并在写入目录之前将其丢弃
- ui-automation - 使用空手道通过 Playwright 启动浏览器窗口的示例
- kivymd - Kivymd mapview 应用程序无法加载图像