Как избежать SQLiteException, блокирующего ошибки

Я разрабатываю приложение Android. Это имеет несколько потоков, читающих из и пишущих в базу данных Android SQLite. Я получаю следующую ошибку:

SQLiteException: код ошибки 5: база данных заблокирована

Я понимаю, что SQLite блокирует весь дб на вставке/обновлении, но эти ошибки только, кажется, происходят при вставке/обновлении, в то время как я выполняю запрос Select. Запрос Select возвращает курсор, который оставляют открытым настоящая хитрость (несколько секунд несколько раз), в то время как я выполняю итерации по нему. Если запрос Select не работает, я никогда не получаю блокировки. Я удивлен, что выбор мог заблокировать дб. Действительно ли это возможно, или что-то еще продолжается?

Что лучший способ состоит в том, чтобы избежать таких блокировок?

16
задан Idolon 15 February 2012 в 12:14
поделиться

1 ответ

Избегая оставлять курсоры открытыми на "довольно долгое время". Если вы можете позволить себе иметь все данные в памяти сразу, то так и делайте.

Если не можете, попробуйте увеличить таймаут занятости.

2
ответ дан 30 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

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