1

我想知道當用戶更新Android應用程序時,Realm會發生什麼情況。 我有一個Android應用程序,有一些從RealmObject擴展的類。我用它們堅持我的應用程序的信息。 問題是,當我將新類定義爲RealmObject並且直接從Android Studio運行應用程序時,應用程序崩潰:此Realm架構中缺少MyRealmClass類。 我必須卸載以前的版本,然後運行應用程序來解決它。當用戶從商店更新Android應用程序時,Realm數據庫會發生什麼變化?

當用戶從Play商店更新應用程序並且新版本有新的Realm類時會發生什麼? 應用程序崩潰嗎?如果是這樣,有什麼辦法可以解決它?

謝謝!

+1

'將在應用程序崩潰?''是如果是這樣,有什麼辦法解決呢?'要麼設置deleteIfMigrationNeeded(),或添加遷移。 – EpicPandaForce

回答

1

是的,應用程序會崩潰。您需要添加一個RealmMigration類。

public class CustomMigration implements RealmMigration { 
    @Override 
    public long migrate(DynamicRealm realm, long oldVersion, long newVersion) { 
    RealmSchema schema = realm.getSchema(); 

    if (oldVersion == 0) { 
     // Migrate from v0 to v1 

     schema.create("myNewTable"); // example 

     oldVersion++; 
    } 

    if (oldVersion == 1) { 
     // Migrate from v1 to v2 
     oldVersion++; 
    } 

    if (oldVersion < newVersion) { 
     throw new IllegalStateException(String.format(Locale.US, "Migration missing from v%d to v%d", oldVersion, newVersion)); 
    } 
    } 
} 

RealmConfiguration config = new RealmConfiguration.Builder(context) 
    .schemaVersion(2) 
    .migration(new MyMigration()) 
    .build(); 

Realm.setDefaultConfiguration(config); 

// This will automatically trigger the migration if needed 
Realm realm = Realm.getDefaultInstance(); 
相關問題