Ошибка "java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time"
Ошибка "java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time" встречается потому, что если делать запросы в базу в основном потоке, можно “повесить” основной интерфейс.
Запросы в базу лучше делать асинхронно, к примеру используя lifecycleScope.
В build.gradle добавить androidx.lifecycle:lifecycle-runtime:
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1"
В классе, где нужно делать запросы в базу, обернуть запрос в “lifecycleScope.launch(Dispatchers.IO) {}”:
lifecycleScope.launch(Dispatchers.IO) {
// запросы в базу, к примеру:
myclassDao.getAll()
}
Комментарии