多个域db在一个应用程序中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多个域db在一个应用程序中相关的知识,希望对你有一定的参考价值。

我想在我的应用程序中添加第二个Realm db。第一个是通过解压缩我的应用程序中提供的realm文件来创建的。我已将配置设置为指向此。

如何添加第二个Realm db?这两个数据库是相互独立的。我创建了SecondRealm类扩展领域对象。

遵循以下:Realm: Use one or multiple realms in an app (and one or multiple schemas)

但我得到:

io.realm.exceptions.RealmMigrationNeededException: Migration is required due to the following errors:
-Class 'SecondRealm' has been added
 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
        at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:171)
        at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)
        at io.realm.BaseRealm.<init>(BaseRealm.java:136)
        at io.realm.BaseRealm.<init>(BaseRealm.java:105)
        at io.realm.Realm.<init>(Realm.java:164)
        at io.realm.Realm.createInstance(Realm.java:435)
        at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:342)
        at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282)
        at io.realm.Realm.getInstance(Realm.java:364)
答案

Realm自动生成一个DefaultRealmModule,其中包含使用@RealmClass注释的每个类(因此包括扩展RealmObject的类)。

如果这不是您需要的模式,那么您需要为给定的RealmConfigurations定义您自己的RealmModule,它描述您要打开的给定Realm文件的模式。

@RealmModule(library = false, classes=[FirstRealm::class.java])
data class FirstModule(val placeholder: String) { // empty data class for equals/hashcode
    constructor(): this("")
}

@RealmModule(library = false, classes=[SecondRealm::class.java])
data class SecondModule(val placeholder: String) { // empty data class for equals/hashcode
    constructor(): this("")
}

val firstConfig = RealmConfiguration.Builder()
                      .name("first.realm")
                      .modules(FirstModule())
                      .build()

val secondConfig = RealmConfiguration.Builder()
                      .name("second.realm")
                      .modules(SecondModule())
                      .build()

val realm1 = Realm.getInstance(firstConfig)
val realm2 = Realm.getInstance(secondConfig)

以上是关于多个域db在一个应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

多个域db在一个应用程序中

Java中代码块执行顺序

AsyncTask 中代码崩溃的旋转屏幕

统计c程序中代码行数以及函数的个数

Lesson Java中代码块和静态代码块的用法

怎样查看DSP程序中代码的运行时间,该如何处理