Как и когда закрыть базу данных sqlite в приложении с большим количеством действий и услуг - PullRequest
4 голосов
/ 28 ноября 2011

Я много читал об этой теме, но никакое решение не может быть использовано в моем приложении. Предположим, есть несколько сервисов и множество действий, которые должны иметь доступ к БД. Конечно, активен только один вид деятельности. Но в худшем случае есть одно действие и две службы, работающие в фоновом режиме с доступом к БД.

Так что, когда я закрываю db из onResume действия - доступ к сервису db вызовет исключение. И то же самое происходит, когда я закрываю базу данных из onDestroy службы и в активности открывается курсор.

Я держу в своем приложении какой-то DBManager как синглтон. Я инициализирую DBManager в Application.onCreate. Но нет места, где можно закрыть базу данных, не рискуя получить доступ к другой службе и деятельности.

Так что теперь я никогда не закрываю БД - есть ли какие-либо последствия для этого? Есть ли такое же простое (или не слишком сложное) решение для закрытия БД?

вот мои приложения в маркете

русская версия

русская версия

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011

Вы должны попытаться использовать ContentProviders, тогда система Android будет обрабатывать создание / открытие / закрытие базы данных так, как нужно.

3 голосов
/ 28 ноября 2011

Я делаю то же самое, я использую одноэлементный объект базы данных и никогда не закрываю его, пока мое приложение не будет уничтожено. Я не заметил никаких проблем до сих пор. Более подробный ответ здесь:

https://stackoverflow.com/a/4842251/448625

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...