致各位
如果您观看有关构建 Android REST 应用程序的 Google IO session ,他们会建议在所有三种设计模式中使用内容提供程序,无论您是否需要共享数据。
如果您查看位于 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 .
最佳答案
这个问题没有真正正确或错误的答案,但出于以下原因,我强烈支持使用内容提供商。
您将获得一个定义明确、易于使用的数据 CRUD 界面。一旦您编写了 Contract 和您的 Provider 方法,只需几行代码即可开始检索数据。当您稍后开始该项目时,或者您聘请其他开发人员时,您将在几分钟内掌握最新进展。
Android 框架中的许多类都是为与内容提供者一起工作而设计的。特别是,CursorLoaders 非常出色,您必须做大量工作才能自己模拟它们的功能。除了编写您自己的所有数据检索代码和异步任务之外,祝您在 Activity 中管理游标生命周期好运。有各种细微差别和需要注意的事情。这需要一段时间。
经常更新或插入行?通过 ContentProvider 通知 ListViews 和其他 Cursor 消费者更改非常容易。如果您不使用 ContentProvider,则必须编写自己的 Observers 并自行管理。
想要集成快速搜索框,或者对 ListView 应用一些强大的过滤功能?同样,如果您使用 Cursors 和 ContentProviders,这很简单,如果您不使用,则需要大量工作。
如果将来您决定将您的数据开放给其他应用程序,那么您最终还是会编写一个 ContentProvider。请记住,您仍然可以使用 ContentProviders 而不允许其他应用修改您的数据。
我可以(并且可能)进一步扩展这篇文章,但希望你能明白这一点。 Google 在 iosched 等出色应用中使用提供商是有原因的。
关于Android ContentProvider 和 Google IO Rest Talk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701270/