我正在开发一个客户端android应用程序,它将从URL检索数据并将其保存在本地数据库中。我熟悉使用SQLiteDatabase
进行此操作。
当我阅读SimpleCursorAdapter
以在列表中显示表格行时,我开始关注。那是我读到CursorLoader
以异步管理游标的时候。
问题是,在阅读它时,他们谈论ContentProvider
,据我所知,该类用于在应用程序之间共享数据,所以我非常困惑。
你能指导我完成这个吗,我不知道我是否确实需要使用CursorLoader
,因为我不知道它的用途是什么,以及它与{{1}有什么关系并在应用之间共享数据。
似乎要检索数据是在第122行:onCreateLoader
中完成的ContentProvider
这意味着我不能再使用SQLiteDatabase#query()方法吗?比如db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy);
答案 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实现。