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