【问题标题】:How does user's whatsapp application detects change in profile picture of its contact?用户的 whatsapp 应用程序如何检测其联系人头像的变化?
【发布时间】:2013-08-22 05:50:31
【问题描述】:

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

到目前为止,我已经完成了位图延迟加载部分的实现。

但是我有一个问题如下:

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

我对此一无所知。任何帮助表示赞赏。

编辑:

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

【问题讨论】:

  • 就像你说的,whatsapp 将这些缩略图存储在缓存中,你能告诉你是如何对缓存的缩略图进行位图延迟加载的吗?任何外部库?

标签: android whatsapp android-lazyloading


【解决方案1】:

Source: WhatsApp 基于 C2DMXMMP 进行消息传递。 MQTT 是另一种用于减少电池使用的协议。

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

回答您的问题: 所以 WhatsApp 可能使用 XMMP 推送或 GCM 推送通知(C2DM 已弃用;])来通知所有客户端发生了某些事件并且所有它的客户都需要照顾它。在您的情况下,事件是在 WhatsApp 联系人中更新您朋友设备中的个人资料图片

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

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

编辑:

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

【讨论】:

  • 答案写得很好,包含很多信息,解决了我的大部分疑问。谢谢:)
  • 也猜猜它的未来派 :)
【解决方案2】:

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

例如:

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

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

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

【讨论】:

  • 感谢您的回复,我一定会尝试的。
  • 欢迎。请分享您的代码,如果它适用于 android :)
  • 我一定会这样做的。
猜你喜欢
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2014-08-08
  • 2018-03-07
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多