Android 设置CursorAdapter(上下文上下文、游标c、int标志)的目的是为了使其与CursorLoader一起工作?
谷歌文档指出不要使用Android 设置CursorAdapter(上下文上下文、游标c、int标志)的目的是为了使其与CursorLoader一起工作?,android,android-contentprovider,android-cursoradapter,android-loadermanager,android-cursorloader,Android,Android Contentprovider,Android Cursoradapter,Android Loadermanager,Android Cursorloader,谷歌文档指出不要使用CursorAdaptersfirst构造函数 CursorAdapter(Context context, Cursor c) 只有两个选择 CursorAdapter(Context context, Cursor c, boolean autoRequery) 上面说 允许控制自动重新查询的构造函数。建议您不要使用此选项,而是使用CursorAdapter(Context、Cursor、int)。使用此构造函数时,将始终设置标志\寄存器\内容\观察者` 及 这说明它
CursorAdapters
first构造函数
CursorAdapter(Context context, Cursor c)
只有两个选择
CursorAdapter(Context context, Cursor c, boolean autoRequery)
上面说
允许控制自动重新查询的构造函数。建议您不要使用此选项,而是使用CursorAdapter(Context、Cursor、int)。使用此构造函数时,将始终设置标志\寄存器\内容\观察者`
及
这说明它是推荐的构造函数
问题是这里最后一个构造函数只有两个标志可用,FLAG\u AUTO\u REQUERY
(int 1)和FLAG\u REGISTER\u CONTENT\u OBSERVER
(int 2)。
使用FLAG\u AUTO\u REQUERY
没有意义,因为我现在使用的是一个游标加载程序,可以在后台对其进行管理和更新。使用FLAG\u REGISTER\u CONTENT\u OBSERVER
,它表示在使用CursorLoader
时不需要它
现在我问,为了使它与我的CursorAdapter
配合使用,我应该传递什么整数CursorAdapter(上下文上下文、游标c、int标志)
?我担心的是如何正确管理旧游标。我真的不确定这样做的正确方法
如果我使用
FLAG\u REGISTER\u CONTENT\u OBSERVER
,那么我必须使用onContentChanged()
,但是在我的LoaderManager
中使用swapCursor()
时,由于光标没有关闭,我可以只执行adapter.swapCursor(光标).close()
。但这会与光标或适配器中的onContentChanged()
冲突吗?我们的目标是不造成任何内存泄漏并提高效率。几周前我在博客上写过这个话题。。。也许通读会有所帮助。你也可以考虑阅读开发人员的网站。
我应该使用哪个构造函数
使用CursorAdapter(上下文上下文、游标c、int标志)
(文档建议使用此构造函数而不是前者)
我应该传递哪个整数CursorAdapter(上下文上下文、游标c、int标志)
只需传递整数0
。您不想传递它标志\u注册\u内容\u观察者
,因为您正在使用光标适配器
(因为光标适配器
为您注册内容观察者),而且您肯定不想传递它
标志\u自动重新查询`因为该标志已被弃用
我担心的是如何正确管理旧游标。我真的不确定这样做的正确方法
LoaderManager
的全部要点是,它在幕后为您完成所有恼人的光标管理工作。自动加载数据而不必担心管理查询的游标的便利性正是旧的startManagingCursor
和stopManagingCursor
方法被弃用的原因
。。。我可以只做adapter.swapCursor(游标).close()
不要那样做。LoaderManager
将自行关闭光标。事实上,如果我没记错的话,如果您试图在光标上调用close()
,就会出现错误。听起来你也不必重写onContentChanged()
。Lmao,你刚刚得到了所有答案,伙计!谢谢我会读你的博客。谢谢大家!<代码>LoaderManager
是我的专长。。。它也是Android框架中我最喜欢的类:)。我期待着回答您的下一个问题:PIt应该在API中定义为CursorAdapter.FLAG_NONE=0。。。谢谢你@AlexLockwood
CursorAdapter(Context context, Cursor c, int flags)`