我应该使用内容提供商吗?

时间:2013-02-24 20:51:08

标签: android sqlite android-contentprovider

我正在阅读Android内容提供商的官方文档,我已经看到了这个:

  

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

     

您需要构建内容   提供商,如果您想提供以下一项或多项功能:

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

我正在开发一个应用程序,当位置通过IntentService更改时,它会同步背景数据。

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

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

由于

1 个答案:

答案 0 :(得分:13)

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

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