对所有人来说,
如果您观看有关构建Android REST应用的Google IO会话,他们建议使用所有三种设计模式来使用内容提供商,无论您是否需要共享数据。
如果您查看http://developer.android.com/reference/android/content/ContentProvider.html处的内容提供商类文档,他们表示如果您计划与其他应用程序共享数据,则只需使用内容提供商。
我的应用程序不需要与其他应用程序共享任何数据,因此使用内容提供商过度杀伤?如果是这样,为什么Google IO REST视频意味着它应该在所有场景中使用?
- =更新= -
会谈在https://dl.google.com/googleio/2010/android-developing-RESTful-android-apps.pdf。
答案 0 :(得分:16)
这个问题没有真正的正确或错误的答案,但由于以下原因,我强烈参与使用内容提供商阵营。
您可以为数据获得定义明确,易于使用的CRUD界面。一旦编写了契约和提供者方法,开始检索数据只需几行。当您以后开始处理该项目,或者您聘请其他开发人员时,您将在几分钟内完成工作。
Android框架中的许多类旨在与内容提供商合作。特别是,CursorLoaders很棒,你需要做大量工作才能自己模拟它们的功能。除了编写所有自己的数据检索代码和异步任务外,还可以好好管理活动中的游标生命周期。有各种细微差别和事情要照顾。这将需要一段时间。
经常更新或插入行?通过ContentProvider向ListViews和其他Cursor消费者通知更改非常容易。如果您没有使用ContentProvider,则必须编写自己的观察者并自行管理。
想要集成快速搜索框,还是对ListView应用一些强大的过滤功能?同样,如果您使用游标和内容提供者,那么这很简单,如果您不使用游戏,则需要完成大量工作。
如果您将来决定向其他应用程序开放数据,那么您最终还是会编写ContentProvider。请记住,您仍然可以使用ContentProviders而不允许其他应用修改您的数据。
我可以(并且可能)进一步扩展这篇文章,但希望你能得到这个想法。由于某种原因,Google会在iosched这样的优秀应用中使用提供商。
答案 1 :(得分:0)
根据我的经验,实现内容提供程序可以做很多工作,然后直接使用数据库。谷歌可以说应用程序应该使用内容提供商的原因之一可能是因为他们相信扩展。实现内容提供商的应用程序可以轻松地将其数据扩展到其他应用程序。
因为这是一个REST谈话,另一个原因可能是因为谷歌开始关注大量的云存储创意。如果您可以实现内容提供程序,则可以在保留大量现有代码的同时更改数据检索功能。内容提供商通常将数据检索功能与实际数据分开,使其更加灵活。如果您想将数据切换到云,那么在您的应用程序中实现内容提供程序会更容易。
在我看来,大多数应用程序不需要查询使云存储变得可取的大量数据。这取决于应用程序,但如果您的数据要保留在内部,我认为您可以避免使用内容提供商。