Что нужно установить для CursorAdapter (Context context, Cursor c, int flags ), чтобы он работал с CursorLoader?

Документы Google указывают, что нельзя использовать первый конструктор CursorAdapters,

CursorAdapter(Context context, Cursor c)

Есть только два других варианта,

CursorAdapter(Context context, Cursor c, boolean autoRequery)

что говорит

Constructor that allows control over auto-requery. It is recommended you not use this, but instead CursorAdapter(Context, Cursor, int). When using this constructor, FLAG_REGISTER_CONTENT_OBSERVER will always be set.`

и

CursorAdapter(Context context, Cursor c, int flags)`

в котором говорится, что это рекомендуемый конструктор.

Проблема в том, что здесь можно использовать только два флага с последним конструктором,FLAG_AUTO_REQUERY(целое число 1 )иFLAG_REGISTER_CONTENT_OBSERVER(число 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? Цель состоит в том, чтобы не вызывать утечек памяти и быть эффективным.

13
задан Alex Lockwood 19 June 2012 в 03:17
поделиться