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

6
我正在阅读Android内容提供程序的官方文档,看到了这个内容:
决定是否需要内容提供程序。如果您想要提供以下一个或多个功能,则需要构建内容提供程序:
- 您希望向其他应用程序提供复杂数据或文件。 - 您希望允许用户将复杂数据从您的应用程序复制到其他应用程序。 - 您希望使用搜索框架提供自定义搜索建议。 - 如果使用完全在您自己的应用程序中,则不需要提供者来使用SQLite数据库。
我正在开发一个应用程序,当位置改变时通过IntentService在后台同步数据。
我发现使用ContentProvider可以观察数据更改,这正是我想要的,而且用户不会注意到。它在IntentService中更改,MainActivity观察此更改,并在通知时更改布局内容。
即使官方文档没有提到这一点,使用ContentProvider是否是一个好主意呢?
谢谢。

可能是何时使用内容提供程序的重复问题。 - Jim G.
1个回答

13
个人而言,我在过去一年半的所有项目中都使用 ContentProviders。它们提供了良好的、独立于数据库的数据抽象来访问您的数据。它们非常灵活,我甚至有一个玩具项目,其中一个 URI 指向 SharedPreference,而其他所有 URI 都用于访问数据库表。ContentProviders 还允许您使用已经构建的框架基础设施,例如 CursorLoaders。从接口和抽象类实现自己并不难,但可能耗时且容易出错,能够利用已经尝试和测试过的工作是一个巨大的优势。
顺便说一下,我记得大约两周前在 Google+ 上有一个帖子上问到完全相同的问题,Cyril Mottier 给出了非常好的答案。您可以在这里阅读。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接