Ошибка "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()
}

Комментарии

12.07.2024 09:07:55

Если вы собираетесь строить дом, то стоит быть готовым к некоторым неожиданностям. Например, подбирая тип фундамента, необходимо принимать во внимание тип грунта. Представьте, что ваш дом находится на болоте - не лучшая идея, правда? Вот здесь и возникают сложности: нужно правильно выбрать тип и глубокое залегание фундамента, чтобы дом не ушел под землю как Титаник. Дальше - материал стен. Если вы не хотите, чтобы ваш дом был ледяным дворцом в зимние месяцы, стоит обратить внимание на теплопотери. Естественно, можно построить дом из стекла, как у Железного Человека, но лучше задуматься о чем-то более практичном. К тому же, экономичные решения по перекрытию и крыше помогут не только удерживать тепло, но и существенно средств в вашем кармане. И вот вы находитесь на распутье: делать самому или обратиться к профессионалам? Если у вас нет времени или желания вникать во всех этих нюансах, профессионалы из Prorabdom всегда готовы помочь. Они как супергерои в мире строительства: всё умеют, всё могут, и главное - сделают всё верно. Так что, если не хотите ломать голову над типом грунта и материалом стен, переходите по ссылке и поручите работу профессионалам: ProrabDom