GCM-serveren er ikke ansvarlig for at opdatere din database, du kan bruge den bare til at informere din app om, yo! der er noget nyt på min server at opdatere, lad os forbinde og downloade nye data. Det sparer en masse batteri på enheden, som du ville spilde ved at samle din server på en bestemt tid internt for at kontrollere tilgængeligheden af opdatering.
Du kan angive en nøgleværdi for json-meddelelsen, som du sender til din app fra GCM som
{"status" :"newupdate"}
og i onMessage() af GCMReceiver kan du få beskeden ved at taste "status" fra hensigt og skrive logik som
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Gå til denne tutorial, hvis du er ny til Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html
For at opdatere databasen i betragtning af at du allerede har implementeret OpenHelper-klassen
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);
Lad mig tilføje et par punkter i henhold til din redigering:
-
Synkronisering betyder at holde begge data ens, og for at opnå dette skal du oprette en webservice, som henter dataene fra din database (tilføj et tidsstempel for hver data, der er indsat i databasen, og send det sammen med de data, du sender til enheden) .
-
Under synkronisering af data henter du maks. værdien af tidsstemplet fra enhedens SQLite-database og sender som en parameter, mens du trykker på web-tjenesten fra enheden, og send data som svar fra serveren, som tilføjes eller opdateres efter det pågældende tidsstempel modtaget på anmodning .
Så selvom brugeren har slettet din app, får du intet i anmodningen om tidsstempler, så send hele data.