用户的whatsapp应用程序如何检测其联系人的个人资料图片中的变化?

时间:2013-08-20 08:41:21

标签: android whatsapp android-lazyloading

我正在浏览 whatsapp 应用程序,我注意到,它第一次从服务器获取缩略图,将它们保存在缓存中,然后从缓存内存而不是服务器中取出这些缩略图。 (比如位图延迟加载)。

直到现在我已经完成了位图延迟加载部分的实现。

但是我有一个问题如下:

当任何联系人更改其个人资料图片时,用户的whatsapp应用程序如何检测到该特定更改以及如何仅更新该特定缩略图,导致应用程序应从高速缓存内存中获取缩略图。

我对此毫无头绪。任何帮助表示赞赏。

修改

是否使用推送通知来通知客户端应用程序更新相应的配置文件缩略图?

2 个答案:

答案 0 :(得分:10)

Source: WhatsApp 基于 C2DM XMMP 构建,用于邮件传递。 MQTT 是另一种用于最小化电池使用的协议。

  

当任何联系人更改其个人资料图片时,该用户是如何做的   whatsapp应用程序检测到特定的更改以及它是如何进行的   仅更新该特定缩略图,导致应用程序   应该从缓存中获取缩略图

回答您的问题:所以WhatsApp可能正在使用XMMP推送或GCM推送通知( C2DM 已弃用;])通知所有客户端已发生某些事件而且它的所有客户都需要照顾同样的事情。在您的情况下,活动是在WhatsApp联系人

中更新朋友设备中的个人资料照片

在您的情况下,您可以使用GCM更新有关此类事件的客户。 我对XMPP并不太了解,但您也可以查看Smack API(用于即时消息和在线状态的开源XMPP(Jabber)客户端库)以及interesting post

我希望我回答你的问题。祝你好运:)

编辑:

GCM是来自 Google 的服务,它使用持久的XMPP连接与Android设备进行通信。您可以使用以下任何一种GCM技术来实现此目的。

答案 1 :(得分:2)

处理这种情况的一种简单方法是在表格中保留modified datetime,用于存储图像和缩略图的路径。您必须保留图像的URL以及修改日期作为参数。

例如:

http://yourdomain.com/images/user_id.png?q=modifieddatetime

每当应用尝试打开此链接时,它将首先检查它是否在缓存中可用。如果不是,将从服务器获取新图像。

我没有在Android上试过这个,但它应该可行。我通常在我的网络应用程序中这样做。