O servidor GCM não é responsável por atualizar seu banco de dados, você pode usá-lo apenas para intimar seu aplicativo que, yo! há algo novo no meu servidor para atualizar, vamos conectar e baixar novos dados. Ele economiza muita bateria do dispositivo que você estaria desperdiçando ao agrupar seu servidor em algum tempo interno definido para verificar a disponibilidade de atualização.
Você pode especificar um valor-chave para a mensagem json que está enviando para seu aplicativo do GCM como
{"status" :"newupdate"}
e em onMessage() do GCMReceiver você pode obter a mensagem pelo "status" da chave da intenção e escrever lógica como
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Vá para este tutorial se você é novo no banco de dados SQLitehttp://www.vogella.com/articles/AndroidSQLite/article.html
Para atualizar o banco de dados considerando que você já implementou a 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);
De acordo com sua edição, deixe-me adicionar alguns pontos:
-
Sincronizar significa manter os dois dados iguais, e para conseguir isso você precisa criar um webservice que buscará os dados do seu banco de dados (adicione um carimbo de data/hora para cada dado inserido no banco de dados e envie-o junto com os dados que você está enviando para o dispositivo) .
-
Ao sincronizar os dados, busque o valor máximo do carimbo de data/hora do banco de dados sqlite do dispositivo e envie como um parâmetro ao acessar o serviço da Web do dispositivo e envie dados em resposta do servidor que são adicionados ou atualizados após esse carimbo de data/hora específico recebido na solicitação .
Portanto, mesmo que o usuário exclua seu aplicativo, você não receberá nada no carimbo de data e hora da solicitação; portanto, envie os dados inteiros.