谷歌文档指出不要使用第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()
in冲突CursorAdapter
吗?目标是不引起任何内存泄漏并提高效率。