Закрыть или не закрыть? - PullRequest
       0

Закрыть или не закрыть?

3 голосов
/ 08 октября 2010

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

Но я также используюcursoradapter для моего autocompletetextview.

Должен ли я также сделать это таким образом: открыть базу данных, получить курсор, закрыть базу данных?!

Я имею в виду, у меня нет проблем из-за неделаю это, но ...

Поэтому мне нужны советы экспертов, советы от вас

Ответы [ 3 ]

2 голосов
/ 08 октября 2010

Вы должны иметь возможность открыть базу данных в методе onCreate и закрыть ее в методе onDestroy. Это будет гарантировать, что оно будет доступно до тех пор, пока действие «живое», и что в конечном итоге оно будет очищено.

Далее, вам, вероятно, следует использовать «startManagingCursor» на курсоре, который вы используете с вашим адаптером. Это обеспечит его деактивацию, запрос и закрытие по мере необходимости при паузе, возобновлении и уничтожении соответственно. Курсоры, которые не используются в адаптерах, должны быть закрыты, как только вы закончите получать от них данные.

Не должно быть утечек, если вы будете следовать этим правилам.

0 голосов
/ 08 октября 2010

не рассматривайте использование finalize () для закрытия соединения с БД. нет никакой гарантии, когда он будет вызван, или даже если когда-нибудь будет вызван. подробности см. во втором издании «Эффективная Java», пункт 7.

Вы можете использовать onPause (), onResume (), чтобы закрыть / открыть соединение? Я верю, что Android дает некоторые гарантии, что они называются.

0 голосов
/ 08 октября 2010

Вы всегда должны закрывать соединение с БД.

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