下面的答案是正确的,但我相信这个答案和问题很快就会与大多数第三方 ORM 一起被“弃用”。在大多数情况下, Google 的新Room Persistence Library ( Yigit's Talk ) 将是首选。尽管 DBFlow 肯定会在许多项目中继续使用(谢谢Andrew),但这里是一个很好的地方,可以将人们重新引导到最新的“最佳实践”,因为这个特定的问题是/适合那些刚接触 DBFlow 的人的。
初始化数据库的正确方法(类似于 SQLiteOpenHelper 的onCreate(db)
回调是创建一个使用 扩展BaseMigration的Migration 对象,然后将以下内容添加到Application 类中(或您正在执行 DBFlow 初始化的任何地方):version=0
onCreate()
FlowManager.init(new FlowConfig.Builder(this).build());
FlowManager.getDatabase(BracketsDatabase.NAME).getWritableDatabase();
在迁移类中,您覆盖migrate()
然后可以使用事务管理器来初始化查找数据或其他初始数据库内容。
迁移类:
@Migration(version = 0, database = BracketsDatabase.class)
public class DatabaseInit extends BaseMigration {
private static final String TAG = "classTag";
@Override
public void migrate(DatabaseWrapper database) {
Log.d(TAG, "Init Data...");
populateMethodOne();
populateMethodTwo();
populateMethodThree();
Log.d(TAG, "Data Initialized");
}
要填充数据,请使用您的模型创建记录,并使用事务管理器通过以下方式保存模型FlowManager.getDatabase(AppDatabase.class).getTransactionManager()
.getSaveQueue().addAll(models);