Когда закрыть курсор в Android?

У меня есть приложение, которое использует курсор для выбора данных через rawQuery из sqlite db для заполнения ListView на Android ;. Каждый раз, когда пользователь нажимает на элемент listview, я создаю новый экземпляр Activity для повторного заполнения listview. Лучше ли вызывать cursor.close() и db.close() чтобы избежать проблем с памятью? У меня действительно есть db.close() в OnDestroy() моей активности.

Вы можете закрыть cursor только вы получили значения для этого конкретного объекта внутри вашего метода.

Btw … Вам не нужно каждый раз воссоздавать список для события пользовательского клика. Просто сообщите, что есть некоторые изменения в данных вашего адаптера, которые были установлены в списке.

Что-то вроде

 youradaptername.notifyDataSetChanged(); 

Это должно автоматически обновлять содержимое внутри ur listview .

Хорошо, если вы создаете новый экземпляр каждый раз в той же Деятельности (хотя я не уверен, что это хорошая практика программирования). Вы можете закрыть курсор, как только вы закончите пересечение / итерацию через источник списка.

Пример:

Пример реализации будет чем-то вроде

 //Pre cursor code startManagingCursor(cursor); if (cursor.moveToFirst()) { do { if (cursor.getString(0).equals(value)) { cursor.close(); a = true; return a; } } while (cursor.moveToNext()); } //Close cursor here, when its work is complete cursor.close(); //Post cursor code ...