room пустая (чтобы вывести сообщение, что нет данных) используя livedata (без использования синхронного запроса в новом потоке)?
Запросы к бд не делают на главном потоке 🤷♂
Через livedata делают же🤷♂
Ну, и вы тогда делайте 😁
LiveData в Room работает асинхронно, не блокируя ничего. Возможно даже в IO.
В смысле - методы Room под капотом асинхронные и присылают результат в LiveData?
Чисто предположение. Думаю, что да. Иначе бы сыпался exception без allowMainThreadQueries(хотя могли и в обход сделать). Flow точно в другом потоке, поэтому скорее всего и LiveData.
Я знаю как работать с livedata, вопрос только в том, что не охота создавать поток для проверки есть ли данные в room, т.к. livedata их не дадут, т.к. новых данных нет🤷♂
Методы рума не асинхронные
1. Проверить, есть ли данные в бд 2. Положить в LiveData true или false в зависимости от результата проверки 3. Всё
Те если его просто вызвать он вывалит ошибку про основной поток
Так вам же пустой список должен прийти в обсервер. Или нет?
Надо попробовать сегодня...
Речь про ситуации с возвращаемым типом LiveData. Там асинхронно все.
Проверил. LiveData получает данные в другом потоке и делает postValue.
ага... это да
Понял, спасибо! В общем, методы Room присылают результат в свою LiveData. А не LiveData обращается в Room за результатом, как тут хотели сделать 😁
Посмотри , можно создать ещё один livedata и через switchMap ...
Спасибо, это идея!
Обсуждают сегодня