小编Jam*_*ido的帖子

Room Database强制OnCreate回调

我正在使用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)

java android android-room

10
推荐指数
2
解决办法
2917
查看次数

标签 统计

android ×1

android-room ×1

java ×1