2013-08-20 8 views
15

Stavo passando attraverso l'applicazione whatsapp e ho notato che, per la prima volta, preleva le miniature dal server, le tiene nella memoria cache e successivamente recupera queste dalla memoria cache anziché dal server. (Come bitmap lazyloading).In che modo l'applicazione WhatsApp dell'utente rileva il cambiamento dell'immagine del profilo del suo contatto?

Finora ho completato l'implementazione della parte lazyloading bitmap.

Tuttavia ho una domanda come segue:

Quando il contatto cambia immagine del profilo come fa l'applicazione WhatsApp dell'utente rileva che particolare modifica e come si aggiorna solo quel particolare miniature, causare l'applicazione dovrebbe prendere le miniature dalla memoria cache.

Non ne ho idea. Qualsiasi aiuto è apprezzato.

EDIT:

La usa notifica push per notificare le applicazioni client per aggiornare il corrispondente profilo delle miniature?

+0

come hai detto tu, negozi di WhatsApp queste miniature in cache, Potete per favore dire come hai fatto lazyloading bitmap di miniature nella cache? Qualsiasi libreria esterna? – user5155835

risposta

10

Source: WhatsApp è costruire su C2DM e XMMP per la consegna dei messaggi. MQTT è un altro protocollo utilizzato per ridurre al minimo l'utilizzo della batteria.

Quando il contatto cambia immagine profilo Come applicazione WhatsApp dell'utente rileva quel particolare cambiamento e come lo fa aggiornamento quel particolare miniature solo, causa l'applicazione è dovrebbe prendere le miniature dalla memoria cache

rispondere alla tua domanda: Così WhatsApp può utilizzare XMMP spinta o una notifica GCM push (C2DM è deprecato;]) di informare tutti i client che si è verificato un evento e tutto quello che Il cliente di t ha bisogno di prendersi cura dello stesso. Nel tuo caso l'evento è aggiornare la tua immagine del profilo nei dispositivi dei tuoi amici in contatti WhatsApp

Nel tuo caso, puoi utilizzare GCM per aggiornare i clienti su tali eventi. Io non ho molto idea su XMPP, ma è anche possibile dare un'occhiata a Smack API (un open source XMPP (Jabber) libreria client per la messaggistica istantanea e presenza) e questo interesting post

Spero risposto alla tua domanda. Buona fortuna :)

Edit:

GCM è un servizio da Google che utilizza una connessione permanente XMPP per comunicare con i dispositivi Android. È possibile utilizzare una delle seguenti tecniche di GCM per raggiungere questo obiettivo.

+0

Risposta molto ben scritta, contiene molte informazioni e risolve molti dei miei dubbi. Grazie :) –

+0

Indovina anche il suo futuristico :) –

2

Un modo semplice per gestire questa situazione sarà mantenere un modified datetime nella tabella in cui si memorizza il percorso dell'immagine e della miniatura. Devi mantenere l'url dell'immagine insieme alla data modificata come parametro.

Esempio:

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

Ogni volta che l'applicazione tenterà di aprire questo link, in primo luogo verificare se è disponibile nella cache o meno. In caso contrario, la nuova immagine verrà recuperata dal server.

Non l'ho provato su Android, ma dovrebbe funzionare. Di solito lo faccio nelle mie applicazioni web.

+0

Thnx per la tua risposta, lo proverò sicuramente. –

+0

Benvenuto. Condividi il tuo pezzo di codice, se funziona per Android :) –

+0

Sicuramente, lo farò. –