如何从服务器获取更新的图片 - Volley

3

我在我的安卓应用中使用了volley库来下载图像, 我有几个问题需要澄清:

  1. 如果服务器上的图像更新了,该库如何反映到相同的图像URL上?库是否会自动处理?它是如何工作的?
  2. 如果库有这个功能,我需要引用哪个类文件才能查看功能以理解它。
  3. 如果库没有这个功能,则需要做什么才能在应用程序端获取更新的图像。

希望尽快收到回复。

2个回答

1

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

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


1
Volley维护本地缓存并使用HTTP方法来判断何时需要重新加载图像。这基于诸如Cache-Control、Expires(用于确定何时检查新版本)和ETag之类的标头,以进行条件查询(这是客户端发出的一种方式,“我已经有版本XXX,只有在它不同的情况下才发送内容”)。因此,服务器不会推送更新,但它控制客户端检查更新的频率。有关Volley如何处理HTTP标头的更多细节,请参见HttpHeaderParser。

对我来说,这意味着Volley可以控制缓存的过期时间,因此它会在特定时间后向服务器发起新的调用,是吗? - chethan
是的,到期日期由服务器提供:每次下载图像时,服务器可以添加一个标题,例如“此图像有效期为2小时”。显然,这仅在服务器处理缓存控制和/或ETags时才有效。 - bwt
非常感谢,你讲得很清楚,我之前不知道它的工作方式。还有一件事想问你,这个缓存控制器标签是否会自动设置在任何修改调用(URL)上,比如说,我要上传一个新图片到服务器,而且图片的名称和之前一样。在将其放置在服务器后,相应的图片调用是否会自动更新缓存控制标签,而无需任何人干预,或者需要有人来处理它? - chethan
服务器需要进行配置。例如,我认为对于Apache来说,默认情况下不使用任何东西。在我的情况下,Volley尝试每次重新加载图像,我不得不在配置中添加一个指令。(但这是一段时间以前的事情,我不是Apache专家) - bwt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接