169 похожих чатов

Всем привет. Возник вопрос, можем ли мы узнать что бд

room пустая (чтобы вывести сообщение, что нет данных) используя livedata (без использования синхронного запроса в новом потоке)?

18 ответов

9 просмотров

Запросы к бд не делают на главном потоке 🤷‍♂

Maxim-Filatov Автор вопроса

Через livedata делают же🤷‍♂

Ну, и вы тогда делайте 😁

LiveData в Room работает асинхронно, не блокируя ничего. Возможно даже в IO.

В смысле - методы Room под капотом асинхронные и присылают результат в LiveData?

Чисто предположение. Думаю, что да. Иначе бы сыпался exception без allowMainThreadQueries(хотя могли и в обход сделать). Flow точно в другом потоке, поэтому скорее всего и LiveData.

Maxim-Filatov Автор вопроса

Я знаю как работать с livedata, вопрос только в том, что не охота создавать поток для проверки есть ли данные в room, т.к. livedata их не дадут, т.к. новых данных нет🤷‍♂

Методы рума не асинхронные

1. Проверить, есть ли данные в бд 2. Положить в LiveData true или false в зависимости от результата проверки 3. Всё

Те если его просто вызвать он вывалит ошибку про основной поток

Так вам же пустой список должен прийти в обсервер. Или нет?

Maxim-Filatov Автор вопроса

Надо попробовать сегодня...

Речь про ситуации с возвращаемым типом LiveData. Там асинхронно все.

Проверил. LiveData получает данные в другом потоке и делает postValue.

ага... это да

Понял, спасибо! В общем, методы Room присылают результат в свою LiveData. А не LiveData обращается в Room за результатом, как тут хотели сделать 😁

Посмотри , можно создать ещё один livedata и через switchMap ...

Maxim-Filatov Автор вопроса

Спасибо, это идея!

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Guys Who’s kurdish on this group?
Hiwa Amiri
11
Карта сайта