6

我正在阅读来自 android 的内容提供商的官方文档,我看到了这个:

确定您是否需要内容提供者。

如果要提供以下一项或多项功能,则需要构建内容提供程序:

  • 您想向其他应用程序提供复杂的数据或文件。
  • 您希望允许用户将复杂数据从您的应用程序复制到其他应用程序。
  • 您想使用搜索框架提供自定义搜索建议。
  • 如果使用完全在您自己的应用程序中,则不需要提供程序来使用 SQLite 数据库。

我正在开发一个应用程序,当位置通过 IntentService 发生变化时,它会在后台同步数据。

我所看到的是,使用 ContentProvider,您可以观察到我真正想要的数据何时发生变化,而用户不会注意到它。它在 IntentService 中发生变化,MainActivity 观察到这种变化,当它被通知时,布局内容发生变化

尽管他们甚至没有提到这一点,但使用 ContentProvider 是个好主意吗?

谢谢

4

1 回答 1

13

就个人而言,过去一年半以来,我一直在我的所有项目中使用 ContentProviders。它们提供了良好的、独立于数据库的数据抽象来访问您的数据。它们非常灵活,我什至有一个游戏项目,其中一个 URI 指向 SharedPreference,而所有其他 URI 都指向访问数据库表。ContentProviders 还允许您使用已经构建的框架基础设施,例如 CursorLoaders。从接口和抽象类实现你自己的并不难,但它可能很耗时且容易出错,能够利用已经尝试和测试的工作是一个很大的优势。

顺便说一句,我记得大约 2 周前在 google+ 上的一篇帖子中同样的问题,Cyril Mottier 给出了一个非常好的答案。你可以在这里阅读。

于 2013-02-24T21:14:00.247 回答