2013-08-20 82 views
15

我所經歷的WhatsApp的應用程序,我注意到,在第一次提取的縮略圖從服務器,它們保存在高速緩存存儲器,然後它獲取這些從緩存內存而不是服務器。 (像位圖lazyloading)。用戶的whatsapp應用程序如何檢測其聯繫人的個人資料圖片中的更改?

到現在我已經完成了執行位惰性加載的一部分。

但是我有一個問題如下:

當任何接觸改變其資料圖片如何在用戶的WhatsApp的應用程序檢測到特定的變化,它是如何只更新特定的縮略圖,導致應用程序應該取來自高速緩存的縮略圖。

我對此毫無頭緒。任何幫助表示讚賞。

編輯:

是否使用推送通知,通知客戶端應用程序更新相應的配置文件的縮略圖?

+0

像你說的,WhatsApp的存儲這些縮略圖緩存,可以請你告訴你是怎麼緩存縮略圖的位圖惰性加載?任何外部庫? – user5155835

回答

10

Source: 的WhatsApp是建立在C2DMXMMP用於消息傳送。 MQTT是另一種用於最小化電池使用率的協議。

當任何接觸改變其資料圖片怎麼做用戶的 WhatsApp的應用程序檢測到特定的變化,它是如何 更新,只有特定的縮略圖,導致應用程序是 應該從高速緩存存儲器中取縮略圖

回答你的問題:所以WhatsApp的可使用XMMP推或GCM推送通知(C2DM 不贊成])告知已發生的一些事件中的所有客戶端和所有的i t的客戶需要照顧一樣。在你的情況下,事件是在WhatsApp聯繫人的朋友的設備中更新你的個人資料圖片

就你而言,你可以使用GCM來更新客戶有關此類事件的信息。 我沒有關於XMPP太多的想法,但你也可以看看Smack API(一個開源的XMPP(Jabber的),用於即時消息和客戶端庫),這interesting post

我希望我回答你的問題。好運:)

編輯:

GCM谷歌使用持久XMPP連接與Android設備進行通信的服務。您可以使用以下任何GCM技術來實現此目的。

+0

寫得很好的答案,包含了大量的信息,並解決了我的疑惑。謝謝:) –

+0

猜猜它的未來派:) –

2

一個簡單的方法來處理這種情況是保持一個modified datetime在表中您存儲的圖像和縮略圖的路徑。您必須保留圖像的URL以及修改日期作爲參數。

如:

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

每當應用程序將嘗試打開這個鏈接,它會首先檢查它是否在高速緩存或不可用。如果不是,將從服務器獲取新圖像。

我沒試過在Android,但它應該工作。我通常在我的Web應用程序中執行此操作。

+0

Thnx爲您的答覆,我一定會嘗試。 –

+0

歡迎。不要分享你的一段代碼,如果它適用於Android :) –

+0

當然,我會這樣做。 –

相關問題