SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Android - atualize o banco de dados sqlite do cliente usando o GCM


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:

  1. 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) .

  2. 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.