在Android应用程序中,每个表应该有一个内容提供程序,还是整个应用程序只有一个?

时间:2010-05-29 19:47:46

标签: java android android-contentprovider

我有多年的Microsoft .NET开发经验(主要是C#),并且一直致力于加快Android和Java的速度。到目前为止,我已经构建了一个带有几个屏幕和一个工作内容提供商的小应用程序。

我在开发内容提供程序时看到的所有示例通常都使用单个表,因此我觉得这是惯例。

我为其他表构建了几个内容提供程序,当我尝试测试它们时遇到了“Unknown URI”IllegalArgumentException。我的一个内容提供商正在抛出异常,但不是我打算打电话的那个。

我的应用程序似乎正在使用AndroidManifest.xml文件中的第一个内容提供程序,现在让我想知道我是否应该只为整个应用程序提供单个内容提供程序。

在Android应用程序中使用多个表是否有最佳实践和/或示例?我应该每个表有一个内容提供者还是整个应用程序只有一个?如果是前者,如何将URI解析为适当的提供者?如果是后者,如何防止我的内容提供者代码被switch语句污染?

2 个答案:

答案 0 :(得分:10)

我必须不同意CommonsWare。 如果要避免IllegalStateExceptions和其他问题,则需要使用Cursorloader。他们为您处理多种事情,并确保光标是光滑的。 因此,您需要内容提供商。 最初的问题尚未得到回答。我不知道数字或内容提供商的最佳做法是什么?表。但在.query方法中,您检查URI ID。您可以测试uri id是否具有特定值并以此方式构建查询。

答案 1 :(得分:2)

99%的Android应用程序不需要内容提供商。

内容提供商有一个主要用途:进程间通信。如果你是:

  • 期望其他开发者访问您的内容提供商,或
  • 正在需要内容提供商的地方集成到Android(例如,快速搜索框的搜索建议)

然后,只有这样,你实现了一个内容提供者。

否则,您所做的只是增加应用程序的开销并使代码更难维护。

因此,如果您的应用程序是99%不需要内容提供者的应用程序之一,只需删除您拥有的应用程序并通过其他方式访问您的内容(例如SQLiteDatabase)。