是否应通过ContentProviders公开所有数据?

时间:2011-10-17 07:21:17

标签: android android-contentprovider

所以我主要来自网络背景,我正在尝试学习Android应用程序的架构。试图掌握对内容提供商的正确理解。

我认为我理解的是,内容提供商几乎是活动/服务和数据(排序的DAO)之间的中间人。我还认为内容提供商也提供其他应用程序访问您的数据(几乎就像一个Web服务?)

我真正得到的是,如果您不需要将此数据暴露给其他应用程序,该怎么办?我是否需要打扰内容提供商和所有uri定义等?如果没有,是否有这个...模式的名称? (或缺乏)或者我最好只使用ContentProviders并接受将此数据公开给其他应用程序的额外好处?

我知道最终我想要在应用程序和外部数据库之间同步数据。我看到了一个支持使用内容提供程序进行RESTful通信的模式的Google IO演示文稿。但就目前而言,我只是试图熟悉基本的静态数据。然后,一旦我得到它,就希望将它从一个REST服务中交换出来。

希望我不会完全离开这里。感谢。

2 个答案:

答案 0 :(得分:1)

如规范中所述,正如您所说:

  

内容提供商存储和检索数据并使其可供所有应用程序访问。它们是跨应用程序共享数据的唯一方式;所有Android软件包都无法访问。

因此,如果其他应用程序无法访问您存储的数据,则无需担心ContentProviders。正如您在Android Data Storage上看到的,您可以通过多种方式存储数据。

我的观点是,在您的情况下,对于REST服务的使用以及不与其他应用程序共享的数据,您应该使用SQLiteDatabase。你可以找到一个很好的例子SQLiteDatabase example here

答案 1 :(得分:1)

虽然它说内容提供商很适合分享内容,但他们也免费提供其他一些东西!

关于内容提供商最好的事情是系统为你处理线程问题:)当我将我的应用程序移植到Honeycomb时,我遇到了很多数据库错误(请注意以前在姜饼中无法存在的错误)我不是不正确地处理不同线程上的访问。

我很快就把一个内容提供商放在了我的数据库之上......从来没有回头看过这个问题,一旦你设置了你的内容提供商,整个应用程序的其他部分的代码就更好了,你似乎更容易了不必担心并发性