SQLite
 sql >> Base de données >  >> RDS >> SQLite

Android - mettre à jour la base de données sqlite du client à l'aide de GCM

Le serveur GCM n'est pas responsable de la mise à jour de votre base de données, vous pouvez l'utiliser uniquement pour intimer votre application, yo ! il y a quelque chose de nouveau sur mon serveur à mettre à jour, permet de se connecter et de télécharger de nouvelles données. Cela permet d'économiser beaucoup de batterie de périphérique que vous gaspilleriez en mettant en commun votre serveur à une heure définie en interne pour vérifier la disponibilité de la mise à jour.

Vous pouvez spécifier une valeur-clé pour le message json que vous envoyez à votre application depuis GCM, comme
{"status" :"newupdate"}

et dans onMessage() de GCMReceiver, vous pouvez obtenir le message par clé "statut" à partir de l'intention et écrire une logique comme

if(message.equalsIgnoreCase("newupdate"){

 //Call a service and download the data and store/update in your databse 

}

Optez pour ce tutoriel si vous êtes nouveau pour Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html

Pour mettre à jour la base de données en considérant que vous avez déjà implémenté 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);

Conformément à votre modification, permettez-moi d'ajouter quelques points :

  1. Synchroniser signifie garder les deux données identiques, et pour y parvenir, vous devez créer un service Web qui récupérera les données de votre base de données (ajoutez un horodatage pour chaque donnée insérée dans la base de données et envoyez-le avec les données que vous envoyez à l'appareil) .

  2. Lors de la synchronisation des données, récupérez la valeur maximale de l'horodatage à partir de la base de données sqlite de l'appareil et envoyez-la en tant que paramètre tout en accédant au service Web à partir de l'appareil, et envoyez les données en réponse du serveur qui sont ajoutées ou mises à jour après cet horodatage particulier reçu dans la demande .

Ainsi, même si l'utilisateur a supprimé votre application, vous n'obtiendrez rien dans l'horodatage de la demande, donc envoyez des données entières.