【问题标题】:How many content provider we can implement in one app?我们可以在一个应用程序中实现多少个内容提供者?
【发布时间】:2012-05-04 15:40:07
【问题描述】:

我已阅读 Android 开发指南并注意到我们可以为内容提供者实现不同的类。所以,

  1. 一个 Android 应用程序中有许多内容提供者还是只有一个内容提供者?
  2. 如何正确实现不同的内容提供者类?

这是我从开发指南中读到的内容:

您将提供程序实现为 Android 中的一个或多个类 应用

http://developer.android.com/guide/topics/providers/content-provider-creating.html

【问题讨论】:

  • 为什么需要不止一个?甚至像联系人这样的复杂数据存储也使用单个ContentProvider——只需查看ContactsContract 和各种CONTENT_URI 值。你会看到他们都拥有相同的权限。
  • 应用程序的数据库中的表比较多,所以我想将内容提供者实现分成类。
  • “应用程序的数据库中有很多表”——联系人应用程序中也有“很多表”,但它使用了一个ContentProvider。 “我想将内容提供者实现分离到类中”——使用复合模式来实现这一点,同时仍然只有一个注册的ContentProvider

标签: android android-contentprovider


【解决方案1】:

您可以根据需要实现任意数量,如您在文档here 中所见。注册内容提供者需要在Android Manifest中添加对应的<provider>标签。

不过,在大多数情况下,您不需要多个内容提供商。通常一个就足够了,因为它可以处理多个表。如果您希望您的应用程序提供对 2 个以上独立数据实体的公共访问权限,那么您应该只需要一个以上的实体。

【讨论】:

    【解决方案2】:

    您可以根据需要在每个应用中使用(提供和使用)任意数量的内容提供商。当然,它们需要不同的内容 URI。

    除了文档(您的链接)中概述的用途之外,您还可以将内容提供者用于访问数据存储的其他目的。内容 URI 可以有参数,因此您可以像使用 Web 服务一样使用内容提供程序。

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        没有规定您必须为每个应用程序仅实现一个内容提供程序。如果您的项目需要,那么您可以这样做。

        如果您想在您的应用程序包中实现多个内容提供者,请确保每个内容提供者的权限部分是唯一的,以便正确地将传入的数据请求路由到每个内容提供者。

        但是拥有过多的内容提供者确实会让您感到困惑并且不是必需的。 我看到有多个内容提供者的唯一情况是,如果您的应用程序中有多个数据库,并且您希望与外部应用程序共享所有这些数据库。您可以为每个数据库使用单独的内容提供程序与外界共享。

        希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-06
          相关资源
          最近更新 更多