Как запросить базу данных комнаты и получить результат в соответствии с необходимостью мгновенно? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть Запрос , который возвращает значение логическое , когда выполняется определенное условие. Это значение используется в адаптере , службе и другие классы тоже. Задача Aysnc не имеет возвращаемого типа. Так как я могу сделать правильный запрос к базе данных и получить результат.Я также создал класс репозиторий , и я хотел бы использовать его, если это возможно.

Здесь есть одно условие, что вы должны не использовать запрос на main thread в соответствии с рекомендациями по архитектуре Google

Я не хочу, чтобы это значение вызывало какие-либо другие функции, если значение изменяется.Я хочу запрашивать его только тогда, когда захочу, и получить результат для метода.

Следующая проблема , с которой я сталкиваюсь - это I cant модель представления вызова в любых методах , имеющихся в сервисных и адаптерах .Я хочу вставить данные или удалить данные, когда приложение находится в фоне с использованием service , а также обновить список с условием, используемым в адаптере .

Я пытаюсь исследовать базу данных комнат. Так что наведите меня на достижение наилучших результатов.

1 Ответ

0 голосов
/ 04 октября 2018

Вот статья о подходе Room Rx https://medium.com/androiddevelopers/room-rxjava-acb0cd4f3757

Смысл в том, чтобы вернуть не номер, а наблюдаемый (возможно в этом примере) из комнаты

@Query(“SELECT * FROM Users WHERE id = :userId”)
Maybe<User> getUserById(String userId);

Тогда вы можетеизвлекать данные в отдельном потоке без использования AsynTask

mDatabase.userDao()
  .getUserById(USER.getId())
  .subscribeOn(Schedulers.computation())
  .observeOn(AndroidSchedulers.mainThread())
  .subscribe(user -> doSomethigWithUser(user));



private void doSomethigWithUser(User user) {
.....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...