Проблема с ошибкой «Завершение курсора» в пользовательском CursorAdapter - PullRequest
2 голосов
/ 07 сентября 2010

У меня есть адаптер курсора, и logcat заполняется вышеуказанными ошибками, как только я нажимаю на представление. Я уже освобождаю курсор CursorAdapter в onDestroy ().

Есть ли способ получить информацию о том, когда был открыт курсор?

Ответы [ 4 ]

2 голосов
/ 07 сентября 2010

Я искал то же самое и ковырялся в SDK.

Финализатор курсора смотрит, установлены ли некоторые свойства отладки, и выводит всю трассировку стека, если требуется.Их можно найти в SQLiteDebug.java в исходном коде Android.

/**
 * Controls the stack trace reporting of active cursors being
 * finalized.
 */
 public static final boolean DEBUG_ACTIVE_CURSOR_FINALIZATION =
   Log.isLoggable("SQLiteCursorClosing", Log.VERBOSE);

Просто установите свойство (с оболочкой adb) log.tag.SQLiteCursorClosing и снова проверьте logcat.

setprop log.tag.SQLiteCursorClosing Log.VERBOSE

Это может работать только в Froyo и выше, я не проверял источник для более старых SDK.

1 голос
/ 07 сентября 2010

Используйте startManagingCursor (курсор) вместо опции onDestroy () - это намного чище и лучше.

0 голосов
/ 08 января 2013

Использование startManagingCursor (c) бесполезно, может быть причиной других ошибок, таких как попытка запроса уже закрытого курсора, вы можете использовать c.close (), освобождая курсор CursorAdapter в onPause ().не в onDestroy ().PS: это может быть полезным в Android4.0.

0 голосов
/ 07 сентября 2010

Вы должны использовать startManagingCursor(c) в своей ListActivity сразу после инициализации курсора.Чем действие будет обрабатывать курсор, и вам не нужно об этом заботиться.

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