android应用程序更新后保留领域数据库

android应用程序更新后保留领域数据库,android,realm,Android,Realm,我在/data/中存储了一个领域数据库。。文件夹。当我通过android studio重新安装相同的应用程序版本时,该过程会保留数据。但如果我从较低的应用程序版本更新到较高的应用程序版本,它会将其删除。原因是什么?在应用程序更新后如何保留此数据库?迁移代码: public class FRGMigration implements RealmMigration { @Override public void migrate(DynamicRealm realm, long oldVersion,

我在/data/中存储了一个领域数据库。。文件夹。当我通过android studio重新安装相同的应用程序版本时,该过程会保留数据。但如果我从较低的应用程序版本更新到较高的应用程序版本,它会将其删除。原因是什么?在应用程序更新后如何保留此数据库?迁移代码:

public class FRGMigration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
    if (oldVersion == 3) {
        realm.getSchema().create("Settings")
                .addField("id", Integer.class, FieldAttribute.PRIMARY_KEY)
                .addField("userName", String.class)
                .addField("cachePolitics", String.class)
                .addField("soundUri", String.class)
                .addField("cacheDir", String.class)
                .addField("timeStamp", Long.class);

        realm.getSchema().get("NewsItem")
                .addField("teaser", String.class);
        oldVersion++;
        SettingsDB settingsDB = DependencyProvider.getInstance().provideSettingsDB();
        Settings settings = settingsDB.getSettings();
        settings.setTimeStamp(0L);
        settingsDB.updateSettings(settings);
    }
}

@Override
public int hashCode() {
    return 37;
}

@Override
public boolean equals(Object obj) {
    return obj instanceof FRGMigration;
}

}

来自API 23+的android操作系统会自动创建数据备份。 如果不希望创建备份,请将这行代码添加到
AndroidManifest.xml

<application ...
    android:allowBackup="false">
</app>

link.

我确实将此参数设置为“true”,但它在应用程序更新时没有帮助,unfortunately@M.Maximovich您可以发布您的
RealmConfiguration
?RealmConfiguration=newrealmConfiguration.Builder().name(“settings.realm”).schemaVersion(4).迁移(new FRGMigration()).build()@M.Maximovich我宁愿说您的迁移有问题……您能尝试删除此部分吗:
SettingsDB SettingsDB=dependencProvider.getInstance().provideSettingsDB();Settings=settingsDB.getSettings();设置。设置时间戳(0L);settingsDB.updateSettings(设置);}@Override public int hashCode(){return 37;}@Override public boolean equals(Object obj){return obj instanceof FRGMigration;}