В моем приложении необходимо выполнить несколько веб-сервисов в async-задаче и вставить большие данные в разные таблицы в базе данных с каждым ответом, для каждой таблицы быстро вставлять iam, блокируя базу данных, начинать и конец транзакций. проблема заключается в том, что после всех веб-сервисов, если я пытаюсь вставить новую запись, отображаются логи. Ошибка 5 (база данных заблокирована). Я проверил, заблокирована ли база данных inTransaction(), isDbLockedByOtherThreads и isDbLockedByCurrentThread. все возвратили false.Android Failure 5 (база данных заблокирована) issue
как решить это.
Я пишу и читаю данные двумя разными потоками одновременно, как вы думаете, это причина блокировки базы данных. Специально я использую суставы для сбора данных из разных таблиц. – Kishore
@Kishore: Да, это определенно причина блокировки базы данных. Если база данных не находится в режиме [WAL] (http://www.sqlite.org/wal.html), ** чтение не разрешено во время записи ** (за исключением транзакции). Я не уверен, что Android поддерживает поддержку режима WAL; вы можете попробовать [включить его] (http://www.sqlite.org/pragma.html#pragma_journal_mode) и посмотреть. Это позволит читать, пока транзакция записи выполняется (за исключением операции с контрольной точкой), но допускается только один писатель за раз. –