O que definir CursorAdapter (Contexto contexto, Cursor c, int flags) para fazer com que funcione com CursorLoader?

Os documentos do Google apontam para não usar oCursorAdapters primeiro construtor,

CursorAdapter(Context context, Cursor c)

Existem apenas duas outras opções,

CursorAdapter(Context context, Cursor c, boolean autoRequery)

que diz

Construtor que permite o controle da auto-solicitação. Recomenda-se que você não use isso, mas, em vez disso, CursorAdapter (Context, Cursor, int). Ao usar esse construtor, FLAG_REGISTER_CONTENT_OBSERVER sempre será definido.

e

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

que diz que é o construtor recomendado.

Problema é que há apenas dois sinalizadores para usar com o último construtor aqui,FLAG_AUTO_REQUERY(int 1) eFLAG_REGISTER_CONTENT_OBSERVER(int 2). UsandoFLAG_AUTO_REQUERY não faz sentido porque agora estou usando um CursorLoader para gerenciá-lo em segundo plano e atualizá-lo. ComFLAG_REGISTER_CONTENT_OBSERVER, diz que não é necessário ao usarCursorLoader.

Agora eu pergunto, que inteiro eu passoCursorAdapter(Context context, Cursor c, int flags) a fim de fazê-lo funcionar bem com o meuCursorAdapter? O que está me preocupando é como gerenciar corretamente o cursor antigo. Eu não tenho certeza da maneira correta de fazer isso.

Se eu usarFLAG_REGISTER_CONTENT_OBSERVERentão eu devo fazer algo comonContentChanged(), mas ao usarswapCursor() no meuLoaderManager, desde que o cursor não está fechado, eu poderia fazeradapter.swapCursor(cursor).close(). Mas isso entraria em conflito comonContentChanged() emCursorAdapter? O objetivo é não causar vazamentos de memória e ser eficiente.

questionAnswers(1)

yourAnswerToTheQuestion