Realm的默认架构只是项目中的所有Realm模型类。但是,您可以更改此行为-例如,您可能希望限制Realm仅包含类的子集。为此,请创建一个自定义RealmModule。
// 创建module
@RealmModule(classes = { Person.class, Dog.class })
public class MyModule {
}
// 在RealmConfiguration中将module设置为仅允许该module定义的类。
RealmConfiguration config = new RealmConfiguration.Builder()
.modules(new MyModule())
.build();
// 可以将多个module组合成一个模式。
RealmConfiguration config = new RealmConfiguration.Builder()
.modules(new MyModule(), new MyOtherModule())
.build();
对于库开发人员来说: 包含Realm的库必须通过RealmModule公开并使用其架构。这样做会阻止为库项目生成默认的RealmModule,这会与App使用的默认RealmModule相冲突。库的RealmModule也是库向应用程序公开其Realm类的方式。
// 库必须创建一个module并设置library = true。 这将阻止创建默认module。
// 可以使用allClasses = true来代替列出库中的所有类。
@RealmModule(library = true, allClasses = true)
public class MyLibraryModule {
}
// 因此,需要图书馆项目明确设置自己的module。
RealmConfiguration libraryConfig = new RealmConfiguration.Builder()
.name("library.realm")
.modules(new MyLibraryModule())
.build();
// 应用程序可以将库RealmModule添加到其自己的架构中。
RealmConfiguration config = new RealmConfiguration.Builder()
.name("app.realm")
.modules(Realm.getDefaultModule(), new MyLibraryModule())
.build();
一个文件中不能有多个RealmModule声明。如果您有两个或多个RealmModule,则必须将声明分成多个文件,每个文件中只有一个声明。
在此处查看有关RealmModules如何在库和应用程序项目之间工作的完整示例。
Realm数据库模块定制指南

本文档详细介绍了如何在Realm数据库中使用自定义模块来限制或组合不同类的使用,适用于库开发者和应用开发者。通过创建自定义RealmModule,开发者可以灵活地控制哪些类被包含在Realm数据库中,这对于避免类冲突和维护清晰的数据库架构至关重要。
4227

被折叠的 条评论
为什么被折叠?



