как получить или наблюдать liveata в классе базы данных комнаты - PullRequest
0 голосов
/ 31 марта 2019

Я создал сущность вместе с соответствующим дао.В классе дао у меня есть следующий метод:

@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, но будет ли это хорошей практикой?Пожалуйста, помогите мне в этом вопросе.

1 Ответ

0 голосов
/ 31 марта 2019

Вы можете получить liveData, вызвав dao.getAll (). Но в целом это не рекомендуется. Вы будете получать liveData от модели. Ознакомьтесь с этим примером рекомендуемого способа обработки данных и использования liveData. https://github.com/googlesamples/android-architecture-components/tree/master/BasicSample

...