如何获取或观察房间数据库类中的livingata

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (25)

我创建了一个实体以及相应的dao。在dao类中,我有以下方法:

@Query("select * from Book")
LiveData<List<Book>> getAll();

我在活动和片段中观察到了这些实时数据。现在我想在数据库打开连接时获取图书清单。我希望在room数据库类中进行此操作。实际上在onOpen()方法中。

public abstract class AppDatabase extends RoomDatabase {
...
    public static synchronized AppDatabase getInstance(Context context) {
        if (instance == null) {
            instance = Room.databaseBuilder(context.getApplicationContext(),
                    AppDatabase.class, DATABASE_NAME)
                    .fallbackToDestructiveMigration()
                    .addCallback(roomCallback)
                    .build();
        }
        return instance;
    }
...
    private static RoomDatabase.Callback roomCallback = new 
        RoomDatabase.Callback() {
        @Override
        public void onCreate(@NonNull SupportSQLiteDatabase db) {
            super.onCreate(db);
            new PopulateDbAsyncTask(instance).execute();
        }

        @Override
        public void onOpen(@NonNull SupportSQLiteDatabase db) {
            super.onOpen(db);
            // get book list information and do some task
        }
    };
}

我遵循android mvvm架构模式。我现在有一些问题。是否有可能获取值或观察onOpen()方法中的livingata(book)?我知道我可以通过在dao类中编写另一个不返回livingata的方法来做到这一点,但这是一个好习惯吗?请帮我解决这个问题。

提问于

扫码关注云+社区

领取腾讯云代金券