5

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

我看到的所有开发内容提供程序的示例通常都使用单个表,所以我的印象是这是约定俗成的。

我为其他表构建了更多内容提供程序,并在尝试测试它们时遇到了“未知 URI”IllegalArgumentException。我的一个内容提供者抛出了异常,但不是我打算调用的那个。

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

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

4

2 回答 2

10

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

于 2012-01-05T17:50:31.400 回答
2

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

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

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

然后,并且只有在那时,您才实施内容提供者。

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

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

于 2010-05-29T20:05:18.467 回答