2013-02-24 53 views
6

我读从Android的内容提供商的官方文档,我已经看到了这一点:我应该使用内容提供者吗?

确定是否需要内容提供商。

你需要建立一个内容提供商 如果要提供以下一项或多项特征:

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

我开发同步后台数据时的位置通过IntentService变化的应用程序。

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

使用ContentProvider虽然他们甚至没有提到这是一个好主意吗?

感谢

+0

[何时使用内容提供者]的可能重复(http://stackoverflow.com/questions/4936712/when-to-use-a-content-provider) – 2014-01-08 15:03:00

回答

13

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

顺便说一句,我记得大约两周前在谷歌的一篇文章中有同样的确切问题,Cyril Mottier给出了非常好的答案。你可以阅读它here