我正在开发一个有以下情况的程序。
您想要查找配方,因此Activity
将调用数据库ContentProvider
。
配方不存储在本地,因此它会调用Web服务来获取数据。
这个数据将存储在数据库中,因为我假设如果你不想保留本地副本,你会选择稍后删除它,但你可能想要购物和烹饪而不必经常上网。
所以我认为我的设计可能会变得过于复杂。
我目前有Service
将调用REST服务,ContentProvider
将转到数据库。
我现在正在考虑将Service
替换为ContentProvider
,因为我不需要长时间运行的服务,因为它很少会出现。
因此,活动将调用db ContentProvider,如果查询为空,则ContentProvider将调用REST ContentProvider,因为Activity不应关心数据来自何处,然后db ContentProvider将存储信息在返回活动之前。
这是我的方案的最佳方法,还是将ContentProviders链接在一起的不良形式?
答案 0 :(得分:1)
我认为这很合理。但是,我认为您仍然可以保留服务但只是始终通过ContentProvider公开数据。这里有一个小问题是你必须在ContentProvider中启动(或绑定)服务,并且在使用ProviderTestcase2<Provider>
测试你的Provider时会遇到问题,因为MockContext不支持启动服务。
答案 1 :(得分:0)
这似乎是一个很好的方法。目前我正在开发类似的东西,我发现这篇很棒的文章,作者一步一步地解释了所有内容,说明了什么是用于什么,最好的方法是什么等等。如果你遇到一些麻烦,请看看它: http://programming-android.labs.oreilly.com/ch11.html