gpt4 book ai didi

android - SQLite 数据库和 CursorLoaders

转载 作者:行者123 更新时间:2023-12-03 18:16:02 29 4
gpt4 key购买 nike

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

当我阅读 SimpleCursorAdapter 时,我的担忧就开始了。在列表中显示表格的行。那是我读到CursorLoader的时候。用于异步管理游标。

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

你能指导我吗,我不知道我是否需要使用 CursorLoader因为我不知道它是干什么用的,它和 ContentProvider 有什么关系?并在应用程序之间共享数据。

编辑:阅读此处的演示应用程序 https://github.com/commonsguy/cwac-loaderex/blob/master/demo/src/com/commonsware/cwac/loaderex/demo/ConstantsBrowser.java

似乎要检索它在第 122 行完成的数据:onCreateLoader

public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
loader = new SQLiteCursorLoader(this, db, "SELECT _ID, title, value "
+ "FROM constants ORDER BY title", null);

return(loader);
}

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

最佳答案

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

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

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

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

关于android - SQLite 数据库和 CursorLoaders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21839594/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com