我正在使用RoomDatabase开发一个需要预先填充其数据的应用程序; 我已经设法通过添加onCreate()回调来实现它,但只有在第一次访问数据库时才会调用它(比如调用其中一个Daos函数).
有没有办法在不进行任何读或写操作的情况下强制创建数据库?
这是我的代码,MyDatabase.get()被称为App.onCreate()
@Database(entities = {Entity1.class, Entity2.class}, version = 1, exportSchema = true)
public abstract class MyDatabase extends RoomDatabase {
private static MyDatabase sInstance;
public synchronized static TaxCodeDatabase get(Context context) {
if (sInstance == null) {
sInstance = buildDatabase(context);
}
return sInstance;
}
private static MyCodeDatabase buildDatabase(final Context context) {
return Room.databaseBuilder(context,
MyCodeDatabase.class,
"my-database")
.addCallback(new Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
sInstance.preFillData(context);
});
}
})
.build();
}
public abstract Entity1Dao …Run Code Online (Sandbox Code Playgroud)