【问题标题】:Should content providers that check db call REST content provider if db doesn't have information如果 db 没有信息,检查 db 的内容提供者是否应该调用 REST 内容提供者
【发布时间】:2011-01-23 05:25:13
【问题描述】:

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

您想查找食谱,因此Activity 将调用数据库ContentProvider。

配方没有存储在本地,因此它会调用网络服务来获取数据。

此数据将存储在数据库中,因为我假设如果您不想保留本地副本,您会选择稍后将其删除,但您可能希望在不经常上网的情况下购物和烹饪。

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

我目前有一个 Service 将调用 REST 服务,还有一个 ContentProvider 用于访问数据库。

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

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

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

【问题讨论】:

  • 你是怎么解决这个问题的?我有完全相同的情况,目前不知道如何从内容提供商启动服务(更喜欢使用 REST 服务)。
  • 啊...这可能会提供更多信息:stackoverflow.com/questions/9112658/…
  • @Ixx - 我现在搁置了那个项目,所以我还没有解决它,但我希望在日历年年底之前回到它。

标签: android rest android-contentprovider


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    这似乎是个好方法。目前我正在开发类似的东西,我发现了这篇很棒的文章,作者在其中一步一步地解释了一切,说什么是什么,什么是最好的方法等等。如果您在实施某些事情时遇到问题,请查看它: http://programming-android.labs.oreilly.com/ch11.html

    【讨论】:

    • 这本书不再提供(免费)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多