谷歌IO休息设计模式,完成ContentProvider并坚持从网络获取数据

问题描述 投票:30回答:1

在观看关于此主题的非常有名的视频后,我决定使用设计模式B.使用带有servicehelper的contentprovider。

基本上我有以下文件:

  • MYPROVIDER
  • MyDatabase的
  • Mycontract

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

现在我需要同步我的contentprovider以从REST API获取数据。因此,我需要实现服务帮助器服务和Rest方法。研究Google IO应用程序对我帮助很大,我是Android的新手,所以仍然难以弄明白。

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

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

  • 我在哪里打电话给服务助手?
  • 服务和助手需要做什么?
  • 这个确切的设计模式有什么好的例子吗?

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

android rest android-service android-contentprovider googleio
1个回答
20
投票

根据我的理解,模式是:

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

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

我在哪里打电话给服务助手? 我从Vigils谈话中选择了模式A.在这种情况下,通话取决于您的申请。您可以在应用程序启动时,创建活动时或用户选择更新按钮时触发更新。我会选择创建活动。 您已选择模式B.在这种情况下,很明显内容提供商必须触发更新。什么时候?获取新数据:在创建时或第一次读取访问后。我会用创作时间。用于在内容提供商中执行相应操作后创建,更新,删除。 这个确切的设计模式有什么好的例子吗? 从我在https://stackoverflow.com/a/8693919/734687的帖子:我知道的唯一开源参考实现可以在http://datadroid.foxykeep.com下找到。它是一个可以在您自己的应用程序中使用的库。该架构在/ presentation下解释 - 请务必阅读。 服务助手需要做什么? 如果你看看幻灯片19中的slides,它是一个单例,它封装了对服务的调用,并通过请求ID处理异步调用。

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

© www.soinside.com 2019 - 2024. All rights reserved.