小编use*_*303的帖子

成功调用 .build() 后未调用 RoomDatabase.Callback() 的 onCreate()

我已经使用 Room Persisdent lib 创建了 MovieDatabase。根据 RoomDatabase.Callback 中 onCreate() 方法的文档,onCreate() 在第一次创建数据库后调用,所有表都创建完毕。

在我调用 buildPersistentDB() 之后发生的事情是,我收到了来自 MoviesDatabase 类的日志,该类用@Database 进行了注释,但是尽管我调用了 RoomDatabase.Callback 中来自 onCreate() 的日志,但从未调用过:

this.mMovieDatabase = this.mMovieDBPersistentBuilder.fallbackToDestructiveMigration().build();
Run Code Online (Sandbox Code Playgroud)

我创建数据库的方式清楚地显示在 buildPersistentDB() 方法中。我还发布了 MovieDatabase 类,如下所示。

我想知道为什么我没有从 Room.Callback 中的 onCreate() 方法收到日志,尽管数据库已成功创建

代码_1

public void buildPersistentDB() {
    Log.v(TAG_LOG, "->buildPersistentDB");
    this.mMovieDBPersistentBuilder = Room
            .databaseBuilder(getApplicationContext(), MovieDatabase.class, ActMain.DATA_BASE_NAME);

    this.mMovieDBPersistentBuilder.addCallback(new RoomDatabase.Callback() {
        @Override
        public void onCreate(@NonNull SupportSQLiteDatabase db) {
            super.onCreate(db);
            Log.v(TAG_LOG + "->onCreate", " buildPersistentDB->DB is created, all tables has been created");
            Log.d(TAG_LOG + "->onCreate", " buildPersistentDB->DB db.getPath(): " + db.getPath()); …
Run Code Online (Sandbox Code Playgroud)

android sqliteopenhelper android-sqlite android-room

3
推荐指数
2
解决办法
3411
查看次数