【问题标题】:Android Realm Project StructureAndroid Realm 项目结构
【发布时间】:2017-09-23 22:31:52
【问题描述】:

我开始在一个已经拥有 Realm 和 MVVM 结构的项目中工作。到目前为止,所有 Realm 方法都是静态的,并且在 RealmHelper 类中,除了在其各自 Activity 的 ViewModel 类中的一些方法。但是 RealmHelper 类开始变得越来越大而且有点乱。我想知道您对在使用 Realm 时重新排列我的方法和类有什么建议。

【问题讨论】:

标签: android mvvm realm helper


【解决方案1】:

如果您想保留 RealmHelper 类来管理您的应用程序可以访问的所有方法,那就太好了。您可能想尝试将方法转换为一个在内部被定向到另一个类的衬垫。

所以结构可能看起来像这样:

co.your.app.realmhelper

  • RealmHelper [公共]
  • WriterHelper [包私有]
  • ReaderHelper [包私有]

因此,您的所有逻辑实际上都发生在包私有类中,但您的应用程序的其余部分将与 RealmHelper 交互。 RealmHelper 将只管理包私有类的实例并确定应为这些类调用哪些方法。

您的另一个选择是摆脱 RealmHelper 以支持较小的类。在不知道您的 RealmHelper 实际在做什么的情况下,很难提供额外的建议。

【讨论】:

  • 感谢您的回答。今天的 RealmHelper 并没有那么大,但它对每个 Model 都有各种方法(Readers 和 Writers 以及其他检查),看起来很乱。我想创建一个模式。您对 WriterHelper 和 ReaderHelper 的想法听起来很不错。
  • 所以当我在 Realm 中做一个项目时,我基本上为我在 Realm 中代表的每个模型都有助手,它们共享一个基本实现。所以像AbstractDao 这样的东西会有CRUD 操作的基本实现。然后每个模型都有自己的 Dao 可以添加额外的操作。这可能是您探索的另一条有用途径,遗憾的是我目前没有开源解决方案可以分享。
  • 我在上面链接的模式非常相似,只是我将Dao 称为repository
  • 我提出了 RealmHelper 的另一个问题。我使用 realm.where() 从数据库中获取所有内容。在我的片段上,我有一个这些对象的列表,当用户触摸该项目时,它应该将属性“checked”设置为 true。但是当它发生时,应用程序会因“只能从事务内部完成更改领域数据”异常而崩溃。所以我使用 copyFromRealm() 来克服这个问题。那么使用助手可以保持事务打开以更新 UI 中的数据库项?
  • 如果项目需要更改并保留所述更改,那么我不知道您为什么要制作非托管副本而不是执行异步事务并通过 RealmRecyclerViewAdapter 的自动更新更新 UI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
相关资源
最近更新 更多