2011-01-23 75 views
2

我正在处理具有以下情况的程序。如果db的内容提供者调用REST内容提供者,如果db没有信息

你想查找食谱,所以Activity将调用db ContentProvider

配方不是本地存储的,所以它会调用Web服务来获取数据。

这些数据将被存储在数据库中,因为我假设如果您不想保留本地副本,您将选择稍后删除它,但是您可能需要购物和烹饪而无需不断上网。

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

我目前有一个Service将调用REST服务,并ContentProvider去数据库。

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

因此,Activities会调用db ContentProvider,如果查询是空的,那么ContentProvider会调用REST ContentProvider,因为Activity不应该关心数据来自哪里,然后db ContentProvider会存储信息返回到活动之前。

这是我的方案的最佳方法,还是它是不好的形式有内容提供商链接在一起?

+0

你是如何解决这个问题的?我有完全相同的情况,目前不知道如何从内容提供者启动服务(更喜欢使用REST服务)。 – Ixx 2013-07-24 17:00:29

+0

啊......这可能是更多的信息:http://stackoverflow.com/questions/9112658/google-io-rest-design-pattern-finished-contentprovider-and-stuck-now – Ixx 2013-07-24 17:01:26

回答

0

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

1

我认为这是相当合理的。但是,我认为您仍然可以保留该服务,但只是始终通过ContentProvider公开数据。这里的一个小故障是,您将不得不在ContentProvider中启动(或绑定)服务,并且在使用ProviderTestcase2<Provider>测试提供程序时您将遇到问题,因为MockContext不支持启动该服务。