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(); 
相关问题