В документах 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? Цель состоит в том, чтобы не создавать утечек памяти и быть эффективными.