如果db没有信息,那么检查db的内容提供者是否应该调用REST内容提供者

时间:2011-01-23 05:25:14

标签: android rest android-contentprovider

我正在开发一个有以下情况的程序。

您想要查找配方,因此Activity将调用数据库ContentProvider

配方不存储在本地,因此它会调用Web服务来获取数据。

这个数据将存储在数据库中,因为我假设如果你不想保留本地副本,你会选择稍后删除它,但你可能想要购物和烹饪而不必经常上网。

所以我认为我的设计可能会变得过于复杂。

我目前有Service将调用REST服务,ContentProvider将转到数据库。

我现在正在考虑将Service替换为ContentProvider,因为我不需要长时间运行的服务,因为它很少会出现。

因此,活动将调用db ContentProvider,如果查询为空,则ContentProvider将调用REST ContentProvider,因为Activity不应关心数据来自何处,然后db ContentProvider将存储信息在返回活动之前。

这是我的方案的最佳方法,还是将ContentProviders链接在一起的不良形式?

2 个答案:

答案 0 :(得分:1)

我认为这很合理。但是,我认为您仍然可以保留服务但只是始终通过ContentProvider公开数据。这里有一个小问题是你必须在ContentProvider中启动(或绑定)服务,并且在使用ProviderTestcase2<Provider>测试你的Provider时会遇到问题,因为MockContext不支持启动服务。

答案 1 :(得分:0)

这似乎是一个很好的方法。目前我正在开发类似的东西,我发现这篇很棒的文章,作者一步一步地解释了所有内容,说明了什么是用于什么,最好的方法是什么等等。如果你遇到一些麻烦,请看看它: http://programming-android.labs.oreilly.com/ch11.html