Где вы должны закрыть базу данных на жизненном цикле активности Android? - PullRequest
1 голос
/ 01 апреля 2012

Должны ли вы закрыть его в функциях onDestroy () или onStop ()?

Ответы [ 4 ]

3 голосов
/ 01 апреля 2012

Лично я предпочитаю закрывать базу данных, как только я ее использую, поддержание открытой базы данных похоже на сохранение FileStream открытым, что я не считаю хорошей идеей. В зависимости от вашего использования вы должны позвонить close(); в вашей базе данных как можно скорее.

ОБНОВЛЕНИЕ

Что касается исходного вопроса, то можно закрыть базу данных на событии onDestroy().

1 голос
/ 01 апреля 2012

Лучше всего закрыть базу данных методом onPause() самое позднее.После этого, возможно, ОС прекратит процесс без предварительного уведомления, если ей потребуются ресурсы, что может повредить вашу базу данных.Определенно не откладывайте это до onStop() или onDestroy().Начиная с документы :

onPause() - это последний метод, который гарантированно будет вызван до того, как процесс может быть остановлен - если система должна восстановить память в аварийной ситуации, тогда onStop() и onDestroy() не могут быть вызваны.

Альтернативой является перемещение всех ваших баз данных для доступа к Сервису или ContentProvider, которые имеют свои собственные жизненные циклы и правила для взаимодействия с ОС.

0 голосов
/ 01 апреля 2012

Вы должны закрыть соединение с базой данных, как только оно вам больше не понадобится, а также для закрытия этого соединения вы должны вызвать close ().

0 голосов
/ 01 апреля 2012

Я никогда явно не закрываю базу данных SQLite.

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

YMMV, но все сводится к тому, как вы разрабатываете свое приложение - я много лет работал с базами данных SQLite на Windowsплатформ задолго до того, как я начал программировать для Android, и у меня еще не было поврежденной базы данных.

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