Вы не можете получить доступ к базе данных SQLite, когда она уже заблокирована.
Чтобы избежать этого, Android дает вам ContentProviders для обработки такого рода вещей.
Вы должны реализовать свой собственный ContentProvider, чтобы делать подобные вещи.
При этом базы данных НИКОГДА не могут считаться поточно-ориентированными, если вы сами не управляете потоками.Избегайте использования БД, как это.Вместо этого кэшируйте данные (возможно, в стеке) и запрашивайте доступ к базе данных с помощью обратного вызова, когда ваша текущая транзакция будет завершена.