В документах google указывается, что нельзя использовать первый конструктор CursorAdapters
,
CursorAdapter(Context context, Cursor c)
Есть только два варианта:
CursorAdapter(Context context, Cursor c, boolean autoRequery)
в котором говорится
Конструктор, который позволяет контролировать автоматическое резервирование. Рекомендуется не использовать это, а вместо этого использовать CursorAdapter (Context, Cursor, int). При использовании этого конструктора всегда будет установлен FLAG_REGISTER_CONTENT_OBSERVER. `
и
CursorAdapter(Context context, Cursor c, int flags)`
который говорит, что это рекомендуемый конструктор.
Проблема в том, что здесь используются только два флага для использования здесь, FLAG_AUTO_REQUERY
(int 1) и FLAG_REGISTER_CONTENT_OBSERVER
(int 2).
Использование FLAG_AUTO_REQUERY
не имеет смысла, потому что теперь я использую CursorLoader, в котором можно управлять им в фоновом режиме, а также обновлять его. С FLAG_REGISTER_CONTENT_OBSERVER
он говорит, что не нужен при использовании CursorLoader
.
Теперь я спрашиваю, какое целое число передаю CursorAdapter(Context context, Cursor c, int flags)
, чтобы он работал нормально с моим CursorAdapter
? Меня беспокоит, как правильно управлять старым курсором. Я не совсем уверен, как правильно это сделать.
Если я использую FLAG_REGISTER_CONTENT_OBSERVER
, тогда я должен что-то сделать с onContentChanged()
, но при использовании swapCursor()
в моем LoaderManager
, так как курсор не закрыт, я мог бы просто сделать adapter.swapCursor(cursor).close()
. Но будет ли конфликт с onContentChanged()
в CursorAdapter
? Цель состоит в том, чтобы не создавать утечек памяти и быть эффективными.