我正在实现一个使用Realm在某些点(彼此之间不相关)持久化数据的应用程序。例如:

  • 保存用户喜欢的项目。
  • (应用程序进行聊天)保存聊天对话和最近的常量
  • 为应用程序
  • 的某些请求实现持久缓存
  • 保存最近的搜索/表单以提供自动完成功能

  • (让这些点中的每一个都命名为模块/包)

    每个模块/软件包都有一些RealmObjects可以保留。我应该如何组织呢?从代码清洁度,性能或我应注意的任何方面考虑

    选项A:使用具有唯一架构的唯一(默认) Realm :

    使用Realm.getInstance(context)
    在每个模块/程序包中访问正确的RealmObjects
    选项B:将多个 Realm 与默认模式一起使用

    RealmConfiguration中为每个模块中使用的 Realm 指定一个不同的名称(使用默认模式)。

    由于数据属于应用程序的不同部分,相互隔离且未互连,因此请为每个模块使用不同的 Realm 名称。

    选项C:使用多个 Realm ,并为每个应用程序包限制与模式一起使用的模型类
    为每个隔离的软件包指定名称和架构。例如:
    public static Realm getChat(Context context){
        RealmConfiguration config = new RealmConfiguration.Builder(context)
                .name("chat.realm")
                .schemaVersion(1)
                .setModules(new ChatRealmModule())
                .build();
        return Realm.getInstance(config);
    }
    
    // Create the module
    @RealmModule(classes = { ChatRoom.class, ChatMessage.class, ChatUser.class})
    public static class ChatRealmModule{
    }
    

    选项D:其他?

    最佳答案

    如果您的数据确实完全断开,我可以选择C)
    它可以进行干净的分离。迁移更容易处理,并且由于Realm必须不时地遍历Realm中的所有模型类,因此性能提升也很小。

    但是,没有一个选项是“错误的”。

    10-05 21:12
    查看更多