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:
RealmConfigura
Super late answer by in case anyone has same problem you can look at what I did based on Dagger2.
First create a module:
@Module
public class DatabaseModule {
public DatabaseModule(Context context) {
Realm.init(context);
RealmConfiguration config = new RealmConfiguration.Builder()
.name("mydb.realm")
.schemaVersion(1)
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(config);
}
@Provides
Realm provideRealm() {
return Realm.getDefaultInstance();
}
}
Its Context is comming from another module
@Module
public class ApplicationModule {
private Application application;
public ApplicationModule(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 {
void inject(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);
}
}