Skip to content Skip to sidebar Skip to footer

Realm Not Auto-deleting Database If Migration Needed

We are in development and db schema changes occur often. Since we are not live, migrations are not needed. I therefor configured Realm as follows: RealmConfiguration config = new R

Solution 1:

We had a similar issue. We solved this by adding

Realm.getInstance(config)

right after

Realm.setDefaultConfiguration(config);

We think the configuration will be set up after Realm is called the first time. This time we don't use any Realm object so there's no exception.

Solution 2:

Super late answer by in case anyone has same problem you can look at what I did based on Dagger2.

First create a module:

@ModulepublicclassDatabaseModule {

    publicDatabaseModule(Context context) {
        Realm.init(context);
        RealmConfigurationconfig=newRealmConfiguration.Builder()
                .name("mydb.realm")
                .schemaVersion(1)
                .deleteRealmIfMigrationNeeded()
                .build();

        Realm.setDefaultConfiguration(config);
    }

    @Provides
    Realm provideRealm() {
        return Realm.getDefaultInstance();
    }
}

Its Context is comming from another module

@ModulepublicclassApplicationModule {
    private Application application;

    publicApplicationModule(Application application) {
        this.application = application;
    }

    @Provides@Singleton
    Context provideContext() {
        return application;
    }
}

This is you App level component:

@Singleton@Component(modules = {ApplicationModule.class, DatabaseModule.class, NetworkModule.class})
public interface ApplicationComponent {

    voidinject(HomeActivity activity);
}

Finally use it in your Activity/Fragment:

public class HomeActivity {

@Inject Realm mRealm;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupDependencyInjection();
        setContentView(R.layout.activity_home);

        // Now you can use Realm
    }

    private void setupDependencyInjection() {
        ((YourApplication) getApplication())
                .getAppComponent()
                .inject(this);
    }
}

Post a Comment for "Realm Not Auto-deleting Database If Migration Needed"