Я создаю приложение, которое использует SQLiteOpenHelper, и я вижу, что объекты курсора, которые я получил от запросов, закрываются в своих методах finalize.android: зачем закрывать курсоры SQLite db, хотя они будут закрываться по методам их финализации?
Я знаю, что не рекомендуется полагаться на метод finalize, но если я работаю правильно и не оставляю ненужных ссылок на какой-либо объект (в одиночных играх, списках, асинхронных задачах и т. Д.), Я не могу быть уверен, что все мои объекты курсора будут освобождены (после уничтожения активности или фрагмента)?
Не только гарантия не будет завершена, но гарантия не будет выполнена. При выключении JVM не выполняет финализатор неподвижных объектов. – Kazaag
Jared, можете ли вы объяснить, как «закрытие соединения меняет постоянное состояние (относительно БД)»? Какое постоянное состояние изменяется, закрывая курсор? – LarsH
@Kazaag: Правда, но если ваш процесс закрывается, это имеет значение, если некоторые курсоры не закрываются? Не то, что я знаю, но могут быть важные вещи, о которых я не знаю, поэтому я хотел бы узнать. – LarsH