CursorLoader
在您的应用程序中使用 a 有两个主要好处Activity.managedQuery():
- 查询是在后台线程上为您处理的(由于构建在
AsyncTaskLoader)
如此大的数据查询上不会阻塞 UI。这是文档建议您在使用 plain 时为自己做的事情Cursor
,但现在它已经在后台完成了。
CursorLoader
正在自动更新。除了执行初始查询之外,CursorLoaderContentObserver
还向您请求的数据集注册 a 并forceLoad()
在数据集更改时调用它自己。这会导致您async
在数据更改时收到回调以更新视图。
每个 Loader 实例也通过 single 处理LoaderManager
,因此您仍然不必直接管理游标,现在连接甚至可以持续超过一个Activity. LoaderManager.initLoader()
,并LoaderManager.restartLoader()
允许您重新连接已为您的查询设置的现有 Loader,并且,在某些情况下,如果可用,立即获取最新数据。
您的 Activity 或 Fragment 现在可能会实现LoaderManager
.Callback 接口。调用initLoader()
将产生 onCreateLoader() 方法,您将在其中构造查询和新CursorLoader
实例(如有必要)。onLoadFinished()
每次有新数据可用时都会触发该方法,并将包括最新的 Cursor 供您附加到视图或以其他方式迭代。
LoaderManager
此外,在类文档页面上有一个很好的例子来说明所有这些组合在一起:http: //developer.android.com/reference/android/app/LoaderManager.html
希望有帮助!