在添加新表的同时,我需要以这种方式手动管理迁移
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;
}
我当时正在考虑将迁移对象数组保留为字符串,并添加整个迁移对象数组。但是后来我发现当表数量增加时很难管理。有什么最好的方法来添加迁移对象?