По умолчанию запросы комнат Observable выполняются из основного потока пользовательского интерфейса. Если вы хотите запустить их через основной поток, вам нужно указать это с помощью кода ниже.
Room.databaseBuilder(this, MyRoomDataBase::class.java, DATABASE_NAME).allowMainThreadQueries()
Если вы добавляете тип возврата в LiveData, вам не нужно устанавливать allowMainThreadQueries()
, Запросы выполняются асинхронно в фоновом потоке с LiveData, и вы можете наблюдать за ним для получения обновлений в этих данных.
Вы можете разрешить запросы в основном потоке, если ваша база данных меньше по размеру и вы не выполняете никаких тяжелых операций над базой данных, в противном случае сборщик может заблокировать пользовательский интерфейс на длительный период времени.