【问题标题】:Using a content provider to query data使用内容提供者查询数据
【发布时间】:2014-07-13 05:37:15
【问题描述】:

使用ContentProvider 从我的数据库中查询数据的最佳方式是什么?

我被告知永远不要在 UI Thread 上执行数据库功能。

当我想执行getContentResolver.query(...)时,是否有一个特殊的加载器可以使用?

【问题讨论】:

  • 是的,它被称为 CursorLoader。

标签: android sqlite android-contentresolver android-loader


【解决方案1】:

我从“特殊加载器”假设您正在使用加载器?据我所知,Loader 构造是在考虑到 ContentProvider 的情况下编写的(有点)。我从与 Google 工程师的交谈中收集到这一点。

加载器通常被设计为在后台线程中加载数据,所以如果你按照指示使用它们,你会很好。

了解 CursorLoader,这是您想要的

http://developer.android.com/guide/components/loaders.html

加上我自己的 2 美分,如果您不是在应用程序之外共享数据,ContentProvider 只是额外的工作和代码,但这样说会让 ContentProvider 的粉丝不高兴,所以请随意忽略我。

【讨论】:

  • 我可能想在应用程序之外共享数据。我刚刚发现了 AsyncQueryHandler。我会调查的。
  • IMO,一个 ContentProvider 为抽象数据访问提供了一个很好的框架。由于您通常无论如何都必须设计这样的抽象,因此使用 ContentProvider 框架是一种不错的方式。
  • @Code-Apprentice 这是一个很长的讨论。简短的回答,您需要编写一种代理查询语言,主要基于 URL。复杂或动态查询极其困难和笨重。您还在 URL 屏障的另一端编写抽象。它只是额外的工作。但是,我说服不了很多人,所以我不太努力。我在柏林 Droidcon 上做了一次演讲。我会说响应是 50/50。
  • @Code-Apprentice 在这里! de.droidcon.com/2014/session/lift-your-back希望我有视频,虽然...
  • @KevinGalligan 你提出了一些好观点。我编写 ContentProvider 的经验非常基础。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多