Я создал сущность вместе с соответствующим дао.В классе дао у меня есть следующий метод:
@Query("select * from Book")
LiveData<List<Book>> getAll();
Я наблюдал эти живые данные в действиях и фрагментах.Теперь я хотел получить список книг , когда база данных открыла свое соединение.Я хочу эту операцию внутри класса базы данных комнаты.На самом деле внутри метода 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 ()?Я знаю, что мог бы сделать это, написав другой метод в классе дао, который не возвращает liveata, но будет ли это хорошей практикой?Пожалуйста, помогите мне в этом вопросе.