SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Android – aktualisieren Sie die SQLite-Datenbank des Clients mit GCM

Der GCM-Server ist nicht dafür verantwortlich, Ihre Datenbank zu aktualisieren, Sie können ihn nur verwenden, um Ihrer App mitzuteilen, dass, yo! Es gibt etwas Neues auf meinem Server zu aktualisieren, lassen Sie uns eine Verbindung herstellen und neue Daten herunterladen. Es spart eine Menge Gerätebatterie, die Sie verschwenden würden, wenn Sie Ihren Server zu einer bestimmten internen Zeit zusammenlegen würden, um die Verfügbarkeit von Updates zu prüfen.

Sie können einen Schlüsselwert für die json-Nachricht angeben, die Sie von GCM an Ihre App senden, z. B.
{"status" :"newupdate"}

und in onMessage() von GCMReceiver können Sie die Nachricht über den Schlüssel "status" von der Absicht abrufen und Logik wie

schreiben
if(message.equalsIgnoreCase("newupdate"){

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

}

Gehen Sie zu diesem Tutorial, wenn Sie neu bei Sqlite Database sindhttp://www.vogella.com/articles/AndroidSQLite/article.html

Um die Datenbank zu aktualisieren, haben Sie die OpenHelper-Klasse

bereits implementiert
 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);

Lassen Sie mich gemäß Ihrer Bearbeitung einige Punkte hinzufügen:

  1. Synchronisieren bedeutet, dass beide Daten gleich bleiben. Um dies zu erreichen, müssen Sie einen Webdienst erstellen, der die Daten aus Ihrer Datenbank abruft (fügen Sie einen Zeitstempel für alle in die Datenbank eingefügten Daten hinzu und senden Sie ihn zusammen mit den Daten, die Sie an das Gerät senden). .

  2. Holen Sie beim Synchronisieren von Daten den Maximalwert des Zeitstempels aus der SQLite-Datenbank des Geräts und senden Sie ihn als Parameter, während Sie vom Gerät auf den Webdienst zugreifen, und senden Sie Daten als Antwort vom Server, die nach diesem bestimmten Zeitstempel, der in der Anfrage empfangen wurde, hinzugefügt oder aktualisiert werden .

Selbst wenn der Benutzer Ihre App gelöscht hat, erhalten Sie keine Zeitstempel für die Anforderung, sodass Sie ganze Daten senden können.