SQLite数据库和CursorLoaders

时间:2014-02-17 21:27:52

标签: android sqlite android-contentprovider android-cursorloader

我正在开发一个客户端android应用程序,它将从URL检索数据并将其保存在本地数据库中。我熟悉使用SQLiteDatabase进行此操作。

当我阅读SimpleCursorAdapter以在列表中显示表格行时,我开始关注。那是我读到CursorLoader以异步管理游标的时候。

问题是,在阅读它时,他们谈论ContentProvider,据我所知,该类用于在应用程序之间共享数据,所以我非常困惑。

你能指导我完成这个吗,我不知道我是否确实需要使用CursorLoader,因为我不知道它的用途是什么,以及它与{{1}有什么关系并在应用之间共享数据。

编辑:阅读此处https://github.com/commonsguy/cwac-loaderex/blob/master/demo/src/com/commonsware/cwac/loaderex/demo/ConstantsBrowser.java

中的演示应用

似乎要检索数据是在第122行:onCreateLoader

中完成的
ContentProvider

这意味着我不能再使用SQLiteDatabase#query()方法吗?比如db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy);

1 个答案:

答案 0 :(得分:0)

ContentProviders最初是为跨应用程序共享数据而设计的,但它们为访问SQLite数据库(简单的API,ContentResolver和SyncAdapter集成等)提供了很大的优势。

本演讲将帮助您了解使用ContentProvider实现您想要的优势:

http://www.youtube.com/watch?v=xHXn3Kg2IQE

您可能知道,您不应该在UI线程上执行数据库查询(以及一般的I / O操作)。因此,CursorLoader可以在后台线程中为您访问数据库,并在UI线程上传递结果Cursor。 CursorLoader使用ContentResolver接口访问将执行查询并返回Cursor的ContentProvider实现。