【问题标题】:Android ContentProvider and Google IO Rest TalkAndroid ContentProvider 和 Google IO Rest Talk
【发布时间】:2011-10-05 18:54:45
【问题描述】:

致各位

如果您观看有关构建 Android REST 应用程序的 Google IO 会议,他们会建议在所有三种设计模式中使用内容提供程序,无论您是否需要共享数据。

如果您查看 http://developer.android.com/reference/android/content/ContentProvider.html 上的 Content Provider 类文档,他们说如果您计划与其他应用程序共享数据,您只需要使用内容提供程序。

我的应用程序不需要与其他应用程序共享任何数据,所以使用内容提供程序是不是有点矫枉过正?如果是这样,为什么 Google IO REST 视频暗示它应该在所有场景中使用?

-= 更新 =-

讲座在这里https://dl.google.com/googleio/2010/android-developing-RESTful-android-apps.pdf

【问题讨论】:

  • 好问题 - 我还没有看到很好的介绍,曾经想知道自己是否要使用它们!
  • 你能把演讲的链接贴出来吗?

标签: android rest io android-contentprovider


【解决方案1】:

这个问题没有真正正确或错误的答案,但出于以下原因,我强烈支持使用内容提供商

您将获得一个定义明确、易于使用的数据 CRUD 界面。一旦您编写了 Contract 和您的 Provider 方法,只需几行代码即可开始检索数据。当您稍后开始该项目时,或者您聘请其他开发人员时,您将在几分钟内掌握最新进展。

Android 框架中的许多类都是为与内容提供者一起工作而设计的。特别是,CursorLoaders 非常出色,您必须做大量工作才能自己模拟它们的功能。除了编写您自己的所有数据检索代码和异步任务之外,还要在活动中管理游标生命周期,祝您好运。有各种细微差别和需要注意的事情。这需要一段时间

经常更新或插入行?通过 ContentProvider 通知 ListViews 和其他 Cursor 消费者更改非常容易。如果您不使用 ContentProvider,则必须编写自己的 Observers 并自行管理。

想要集成快速搜索框,或者对 ListView 应用一些强大的过滤功能?同样,如果您使用 Cursors 和 ContentProviders,这很简单,如果您不使用,则需要大量工作。

如果将来您决定将您的数据开放给其他应用程序,那么您最终还是会编写一个 ContentProvider。请记住,您仍然可以使用 ContentProviders 而不允许其他应用修改您的数据。

我可以(并且可能)进一步扩展这篇文章,但希望你能明白这一点。 Google 在像 iosched 这样的优秀应用中使用提供商是有原因的。

【讨论】:

  • Google I/O 应用程序中的内容提供程序过于复杂,包含大量样板代码。也许它看起来不错,但这并不是处理 URI 的最佳示例。
  • @AliakseiN。那么最好的例子是什么?我真的很想找到一个很好的例子来说明如何使用内容提供者实现应用程序
【解决方案2】:

根据我的经验,实现内容提供者可能比直接使用数据库要多得多。谷歌可以说应用程序应该使用内容提供者的原因之一可能是因为他们相信扩展。实现 Content Provider 的应用可以轻松地将其数据扩展到其他应用。

因为它是一个 REST 演讲,另一个原因可能是因为 Google 开始关注很多云存储理念。如果您可以实现 Content Provider,则可以更改数据检索功能,同时仍保留大量现有代码。内容提供者通常将数据检索功能与实际数据分开,使其更加灵活。如果您想将数据切换到云端,在您的应用程序中实现 Content Provider 会容易得多。

不过,在我看来,大多数应用程序不需要查询大量数据,这使得云存储成为可取的。这取决于应用程序,但我认为如果您的数据要保存在内部,您可以避免使用内容提供商。

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2019-07-26
    • 2013-03-01
    相关资源
    最近更新 更多