使用BackupAgentHelper还原Realm DB

时间:2016-03-30 13:59:59

标签: android backup realm

我尝试使用BackupAgentHelper备份和恢复我的领域数据库。

我的问题是,当我恢复数据库时,我的应用程序加载了一个空数据库。我不确切地知道问题的确切位置,要么恢复文件,要么我的应用程序正在创建default.realm并覆盖已恢复的文件。

以下是我的示例BackupAgent。

@Override
public void onCreate() {
    FileBackupHelper hosts = new FileBackupHelper(this, Realm.getDefaultInstance().getConfiguration().getRealmFileName());
    addHelper(Realm.getDefaultInstance().getConfiguration().getRealmFileName(), hosts);
}

@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
                     ParcelFileDescriptor newState) throws IOException {
    // Hold the lock while the FileBackupHelper performs backup
    synchronized (MainActivity.sDataLock) {
        Log.w("Backup", "onBackup");
        super.onBackup(oldState, data, newState);
    }
}

@Override
public File getFilesDir() {
    File path = getDatabasePath(Realm.getDefaultInstance().getConfiguration().getRealmFileName());
    return path.getParentFile();
}

@Override
public void onRestore(BackupDataInput data, int appVersionCode,
                      ParcelFileDescriptor newState) throws IOException {
    Log.w("Backup", "onRestore");
    // Hold the lock while the FileBackupHelper restores the file
    synchronized (MainActivity.sDataLock) {
        Log.w("Backup", "Restoring data...");
        super.onRestore(data, appVersionCode, newState);
    }
}

我的Application类配置领域:

public class MyApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();

    RealmConfiguration realmConfiguration = new RealmConfiguration
            .Builder(this)
            .deleteRealmIfMigrationNeeded()
            .schemaVersion(10)
            .build();
    Realm.setDefaultConfiguration(realmConfiguration);

    Log.d("Files", "MyApplication");
    logFiles();
}

我发现在backupAgent之前调用MyApplication类,是否可以创建dbfile而backupagent不会覆盖它?

由于

0 个答案:

没有答案