У меня была такая же проблема в одном из моих приложений. Я открывал и закрывал базу данных каждый раз, когда получал к ней доступ. Но я все еще получил ошибку. Я полагаю, что при таком подходе разные потоки, которые обращаются к общему объекту, портят состояние базы данных.
Чтобы преодолеть это, я поместил экземпляр базы данных в основное действие и поделился им со всеми другими действиями. в методе OnCreate()
основного действия создается экземпляр db. Мне пришлось переопределить методы onResume()
и onPause()
, которые я закрыл базу данных (в пределах onPause()
) и открыл (в пределах onResume()
) основного действия.
Я не уверен, что это правильный способ избавиться от проблемы, но до сих пор это работало для меня.