Android内容提供者和Google IO Rest Talk

16

大家好,

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

如果您查看Content Provider类文档网址为http://developer.android.com/reference/android/content/ContentProvider.html ,它们说只有当您计划与其他应用程序共享数据时才需要使用content provider。

我的应用程序不需要与其他应用程序共享任何数据,因此使用Content provider是否过度?如果是这样,为什么Google IO REST视频暗示应在所有情况下使用它呢?

-= 更新 =-

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


1
好问题 - 我没有看到这个问题得到很好的解答,我自己也曾经想过是否要使用它们! - David Snabel-Caunt
你能发一下这个讲座的链接吗? - Blackbelt
请在此处查看:https://dl.google.com/googleio/2010/android-developing-RESTful-android-apps.pdf - Koppo
2个回答

16

这个问题并没有真正的对或错的答案,但出于以下原因,我强烈倡导使用内容提供程序

您可以获得定义明确、易于使用的数据CRUD接口。一旦编写了Contract和Provider方法,检索数据只需几行代码即可完成。当您以后再次工作或聘请另一位开发人员时,只需几分钟即可上手。

Android框架中的许多类都是为了与内容提供程序配合使用而设计的。特别是CursorLoader非常出色,如果不使用它们的功能,则需要花费相当多的精力来模拟它们的功能。祝你好运,在活动内管理游标生命周期,除了编写所有自己的数据检索代码和异步任务之外。有各种微妙之处需要注意。这将需要一段时间

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

想要集成快速搜索框,或者对ListView应用一些强大的过滤器吗?如果使用Cursors和ContentProviders,则很简单,如果不使用,则需要花费大量精力。

如果未来决定向其他应用开放数据,则最终仍需编写ContentProvider。请记住,即使不允许其他应用程序修改您的数据,仍然可以使用ContentProviders。

我可能会进一步扩展这篇文章,但希望您已经了解了其中的意思。Google在伟大的应用程序中,如iosched中使用提供程序是有原因的。


Google I/O 应用程序中的内容提供程序过于复杂,有很多样板代码。也许它看起来不错,但那并不是处理 URI 的最佳示例。 - Aleks N.
1
@AliakseiN。那么最好的例子是什么?我真的很想找到一个好的实现应用程序内容提供程序的示例。 - Axel

0

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

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

但是,在我看来,大多数应用程序不需要查询使云存储变得理想的大量数据。这取决于应用程序,但是如果您的数据意味着保留在内部,则我认为避免使用内容提供程序是可以的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接