хорошо, у меня есть доступ к информации.и найдите одну интересную статью о потоке. Управляйте базой данных.
В документации для Android сказано: isDbLockedByOtherThreads () устарела после API 16. Всегда возвращает false.Не используйте этот метод.
, поэтому проблема возникает из isDbLockedByCurrentThread ();
API-интерфейс Android сообщил о методе:
Возвращает true, если текущий поток содержитактивное соединение с базой данных.
Название этого метода происходит от того времени, когда активное соединение с базой данных означало, что поток удерживал фактическую блокировку базы данных.В настоящее время больше не существует настоящей «блокировки базы данных», хотя потоки могут блокироваться, если они не могут получить соединение с базой данных для выполнения определенной операции.
На самом деле, когда вы вставляете, удаляете, изменяете в sqlitedatabase в androidрамки это все об одном потоке.это означает, что когда вы используете два или более потока Управляйте (вставляйте, удаляйте, изменяйте) sqlitedatabase, он будет выдавать ошибки «база данных заблокирована»;
Но вы можете открыть многопоточность, чтобы поставить в очередь ту же sqlitedatabase, это не будетесть какие-либо проблемы
Кстати, если вы хотите очереди, когда вы сдаете вставку;Вы должны использовать
getWritableDatabase().enableWriteAheadLogging();
, он работает только на Android 3.0 или выше;
Возможно, вам следует прочитать эту статью (Если вы умеете читать по-китайски, ха-ха): http://tech.techweb.com.cn/thread-621414-1-1.html