El servidor GCM no es responsable de actualizar su base de datos, puede usarlo solo para insinuar su aplicación, ¡yo! hay algo nuevo en mi servidor para actualizar, conectemos y descarguemos nuevos datos. Ahorra una gran cantidad de batería del dispositivo que estaría desperdiciando al agrupar su servidor en un tiempo interno definido para verificar la disponibilidad de la actualización.
Puede especificar un valor-clave para el mensaje json que está enviando a su aplicación desde GCM como
{"status" :"newupdate"}
y en onMessage() de GCMReceiver puede obtener el mensaje mediante la tecla "estado" de la intención y escribir lógica como
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Ve a este tutorial si eres nuevo en Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html
Para actualizar la base de datos considerando que ya implementó la clase 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);
De acuerdo con su edición, permítame agregar algunos puntos:
-
Sincronizar significa mantener ambos datos iguales, y para lograr esto, debe crear un servicio web que obtenga los datos de su base de datos (agregue una marca de tiempo para cada dato insertado en la base de datos y envíelo junto con los datos que está enviando al dispositivo) .
-
Mientras sincroniza los datos, obtenga el valor máximo de la marca de tiempo de la base de datos sqlite del dispositivo y envíelo como un parámetro mientras accede al servicio web desde el dispositivo, y envíe datos en respuesta desde el servidor que se agregan o actualizan después de esa marca de tiempo en particular recibida en la solicitud .
Entonces, incluso si el usuario eliminó su aplicación, no obtendrá nada en la marca de tiempo de la solicitud, así que envíe los datos completos.