【问题标题】:Google IO Rest design pattern, finished ContentProvider and stuck on getting the data from the networkGoogle IO Rest 设计模式,完成 ContentProvider 并坚持从网络获取数据
【发布时间】:2012-02-25 03:02:44
【问题描述】:

在观看了关于这个主题的非常有名的视频后,我决定使用设计模式 B。将 contentprovider 与 servicehelper 一起使用。

基本上我有以下文件:

  • 我的提供者
  • 我的数据库
  • 我的合同

在活动中,我现在可以获取内容解析器并查询提供者。到目前为止一切都很好。

现在我需要同步我的 contentprovider 以从我的 REST API 中获取数据。 因此我需要实现一个服务助手服务和 Rest 方法。 学习 Google IO 应用程序对我有很大帮助,我是 Android 新手,所以仍然很难弄清楚。

我看到 Google 使用 RemoteHandlers 来处理外部数据,我猜它们是图中的处理器类?

我不明白的是如何实现servicehelper + service部分从网络中获取数据。

  • 我在哪里求助服务助手?
  • 服务和助手具体需要做什么?
  • 有没有这种精确设计模式的好例子?

我已经在堆栈上阅读了几个关于此的主题,都提出了不同的方法。我找到了一个声明 restprovider 的示例,然后 myProvider 必须扩展该提供程序。我不喜欢这些解决方案,并希望遵循这种结构化的设计模式。

【问题讨论】:

  • 您是否有指向您引用的 Google IO 视频的链接?
  • 我认为你可以在这个项目中找到你所有的答案:github.com/necronet/Eli-G它已经在this SO post中详细说明了。
  • 你好 Zakaria,我一周前发现了这个例子,但它是该模式的一个非常肮脏的实现。它创建另一个 Contentprovider 来处理 REST 而不是服务。感谢您的回复,但我正在寻找图像中描述的模式的完整实现。 @约翰youtube.com/watch?v=xHXn3Kg2IQE
  • @Zakaria,我之前的回复不正确。我把这个项目和我在这里的其他代码混淆了。我已经看过 Eli-g 的代码,但我很难理解它的逻辑。我愿意批准一个完全解释 eli-g 逻辑的遮阳篷。感谢到目前为止的回复
  • @Samvdb :您是否看过 Eli-G 解释该逻辑的 SO 帖子?

标签: android rest android-service android-contentprovider googleio


【解决方案1】:

据我了解,模式是:

  • 不要显示空活动并在后台加载内容。当加载失败时,您将无法显示任何内容。
  • 改为显示存储在 db 中的数据,可通过内容提供程序和适配器访问 - 这可以保证用户始终看到内容
  • 在后台获取新数据,一旦数据在手机上,活动就会通过适配器自动更新

对于你的问题(我改变了顺序):

我在哪里调用服务助手?
我从 Vigils talk 中选择模式 A。在这种情况下,调用取决于您的应用程序。您可以在应用程序启动、创建活动或用户选择更新按钮时触发更新。我会选择创建活动。

您选择了模式 B。在这种情况下,很明显内容提供者必须触发更新。什么时候?获取新数据:在创建时或第一次读取访问之后。我会使用创建时间。在您的内容提供程序中执行相应操作后的创建、更新、删除。

有没有这种精确设计模式的好例子?
来自我在https://stackoverflow.com/a/8693919/734687 的帖子:我知道的唯一开源参考实现在http://datadroid.foxykeep.com 下可用。它是一个可以在您自己的应用程序中使用的库。架构在 /presentation 下进行了解释 - 请确保您阅读它。

服务助手需要做什么?
如果您查看幻灯片 19 中的 slides,它是一个单例,它封装了对服务的调用并通过请求 ID 处理异步调用。

服务具体需要做什么?
该服务(演示文稿中的幻灯片 17)只是确保操作在后台执行。

【讨论】:

  • Datadroid 声称是选项 A 的实现,而不是选项 B。是不是搞错了?
猜你喜欢
  • 2011-10-05
  • 2011-12-11
  • 2021-12-16
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2010-10-14
  • 2021-04-06
  • 2013-06-23
相关资源
最近更新 更多