При добавлении новой таблицы мне нужно управлять миграцией вручную, что я и сделал следующим образом:
private static final Migration MIGRATION_2_1 = new Migration(DbConfig.Version_SchoolEvent_2, DbConfig.Version_NewsAnnouncement_1) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL(NEWS_ANNOUNCEMENT);
}
};
private static final Migration MIGRATION_3_1 = new Migration(DbConfig.Version_PublicNotification_3, DbConfig.Version_NewsAnnouncement_1) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL(NEWS_ANNOUNCEMENT);
}
};
и затем
при создании базы данных
public static NewsAnnouncementDatabase getDatabase(final Context context) {
try {
if (INSTANCE == null) {
synchronized (NewsAnnouncementDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
NewsAnnouncementDatabase.class, DbConfig.Db_WebSchoolRx)
// Wipes and rebuilds instead of migrating if no Migration object.
.allowMainThreadQueries()
// .fallbackToDestructiveMigration()
.addMigrations(MIGRATION_2_1, MIGRATION_3_1)
.addCallback(sRoomDatabaseCallback)
.build();
}
}
}
} catch (Exception ex) {
Log.i("Instance of Database", ex.getMessage());
}
return INSTANCE;
}
Iдумал сохранить массив объектов миграции в строку и добавить весь массив объектов миграции.Но потом мне было трудно управлять, когда число столов растет.Есть ли лучший способ добавить объект миграции?