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"