【问题标题】:How volley get updated image from server凌空如何从服务器获取更新的图像
【发布时间】:2016-01-21 19:39:46
【问题描述】:

我在我的 android 应用程序中使用 volley 库来下载图像,我对这个库没有什么要澄清的。

  1. 库将如何在同一图像 URL 上反映在服务器端更新的更新图像,库会自动处理吗?它是如何工作的 ?
  2. 如果库促进了这一点,我必须参考什么类文件才能了解功能。
  3. 如果库没有此功能,则需要执行哪些操作才能在应用程序端获取更新的图像。

我希望,我很快就会收到答复。

【问题讨论】:

    标签: android android-volley


    【解决方案1】:

    我不认为Volley 提供了在服务器端完成更新时使用的任何回调。 Volley 是一个网络API,用于将数据发送到服务器。

    要接收更新,您必须实现Push Messaging 功能。当服务器端进行更新时,服务器将推送消息发送给应用程序,然后应用程序将收到通知并执行其操作。

    【讨论】:

      【解决方案2】:

      Volley 维护一个本地缓存并使用 HTTP 方法来了解是否以及何时需要重新加载图像。

      这是基于像 Cache-ControlExpires(知道何时检查新版本)和 ETag 这样的标头来进行条件查询(这是客户说“我已经有版本 XXX 的内容不一样才发给我")

      所以服务器不会推送更新,但它控制客户端检查更新的频率。

      有关 Volley 如何处理 HTTP 标头的更多详细信息,您可以查看HttpHeaderParser

      【讨论】:

      • 对我来说这意味着,volley 可以控制缓存设置为按时间过期,所以它会重新调用服务器,不是吗?
      • 是的,有效期由服务器给出:每次下载图像时,服务器都可以添加一个标题,上面写着“此图像有效期为 2 小时”。显然它只有在服务器处理缓存控制和/或 ETags 时才有效
      • 非常感谢,你说的很清楚,我不知道它的工作原理。还有一件事要问你,这个缓存控制器标签是否会在任何修改后的调用(url)上自动设置,比如说,我已经在服务器上上传了新图像,并且图像的名称与以前相同。将其放入服务器后,此图像的相应调用是否会在没有任何干预的情况下使用缓存控制标签进行更新,或者是否有任何机构负责处理它?
      • 服务器需要配置。比如我认为forApache默认是使用none。在我的情况下,Volley 每次都尝试重新加载图像,我必须在配置中添加一个指令。 (但那是前一段时间了,我不是 Apache 专家)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2014-01-10
      相关资源
      最近更新 更多