Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Что-то вроде

youradaptername.notifyDataSetChanged();

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

Ответ 2

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

Пример:

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

//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 ...