java - 安卓:CursorLoader、LoaderManager、SQLite

标签 java android multithreading android-loadermanager

尝试更新我的旧应用,其中某些方法已被弃用。我发现如果我想使用显示来自 db 的数据的 ListView,我应该使用 LoaderManager + CursorLoader。 CursorLoader 与内容提供者一起工作。那么对于我的数据库中的每个表,我现在应该创建内容提供程序吗?我为什么要 ?据我所知,内容提供者用于与其他应用程序共享一些数据库信息,但我的应用程序不共享任何信息。那么我可以在没有内容提供者的情况下使用 CursorLoader 吗???

最佳答案

我写了一个 blog post在这个问题上。您也可以查看 answer了解更多信息。希望它会为您解决问题。

正如 Barak 所说,可以实现 CursorLoader通过扩展 AsyncTaskLoader<Cursor> 无需内容提供者类(class)。也就是说,大多数教程和示例代码使用 ContentProvider s,而且 Android 团队似乎也鼓励使用它。它也比实现自己的类要简单得多。

也就是说,如果您真的不想使用内容提供程序,Dianne Hackborn(Android 框架开发人员之一,在 SO 上也称为“hackbod”)建议您自己编写使用您的数据库类而不是内容提供程序的加载程序。最简单的方法就是获取CursorLoader 的来源。兼容性库中的类,并将提供程序查询替换为对您自己的数据库帮助程序类的查询。

关于java - 安卓:CursorLoader、LoaderManager、SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017646/

相关文章:

java - 如何更改 1970-01-01T00 :00:00Z for LocalDateTime 的默认纪元

Android全屏,EditText将其他 View 向上推

java - 重复的类com.google.api.Advice

java - Swing/batik 的奇怪行为

java - Java中的巴比伦算法

Android:从 HOME 重启后保留任务的 Activity 堆栈

android - 从命令行运行 android 单元测试?

android - 如何以指定的速率读取Android中的方向传感器数据?

java - 如何使用不可变对象(immutable对象)解决两个编写器的竞争条件

swift - 更新 GMSMarkers 而不阻塞主线程