Il server GCM non è responsabile dell'aggiornamento del database, puoi usarlo solo per intimidire la tua app, yo! c'è qualcosa di nuovo sul mio server da aggiornare, connettiamoci e scarichiamo nuovi dati. Risparmia molta batteria del dispositivo che sprecheresti nel raggruppare il tuo server in un determinato periodo di tempo interno per verificare la disponibilità dell'aggiornamento.
Puoi specificare un valore-chiave per il messaggio json che stai inviando alla tua app da GCM come
{"status" :"newupdate"}
e in onMessage() di GCMReceiver puoi ottenere il messaggio per chiave "status" dall'intento e scrivere logica come
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Segui questo tutorial se non conosci Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html
Aggiornare il database considerando che hai già implementato la classe OpenHelper
MyOpenHelper myOpenHelper= new MyOpenHelper(this)
sqltitedatabaseObject=myOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(<your_column_name>,<value>);
// For Updating the Existing Entry
long rowAffected=sqltitedatabaseObject.updateWithOnConflict(<Table_Name>,
values,<Selection_For_Update>,<Selection_Paramans_In_String_Array>,
0);
// For Inserting a New Row
long rowsInserted=sqltitedatabaseObject.insert(<Table_Name>, null, values);
Secondo la tua modifica, lasciami aggiungere alcuni punti:
-
Sincronizzare significa mantenere entrambi i dati uguali, e per ottenere ciò devi creare un webservice che preleverà i dati dal tuo database (aggiungi un timestamp per ogni dato inserito nel database e lo invii insieme ai dati che stai inviando al dispositivo) .
-
Durante la sincronizzazione dei dati, recupera il valore massimo del timestamp dal database sqlite del dispositivo e invia come parametro mentre si accede al servizio Web dal dispositivo e invia i dati in risposta dal server che vengono aggiunti o aggiornati dopo quel particolare timestamp ricevuto nella richiesta .
Quindi, anche se l'utente ha eliminato la tua app, non riceverai nulla nel timestamp della richiesta, quindi invia tutti i dati.