GCM-servern är inte ansvarig för att uppdatera din databas, du kan använda den bara för att informera din app om att, yo! det finns något nytt på min server att uppdatera, låt oss ansluta och ladda ner ny data. Det sparar mycket batteri på enheten som du skulle slösa på att poola din server på en viss intern tid för att kontrollera tillgängligheten för uppdateringar.
Du kan ange ett nyckel-värde för json-meddelande som du skickar till din app från GCM som
{"status" :"newupdate"}
och i onMessage() av GCMReceiver kan du få meddelandet genom nyckel "status" från avsikt och skrivlogik som
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Gå till denna handledning om du är ny för Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html
För att uppdatera databasen med tanke på att du redan implementerat 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);
Låt mig lägga till några punkter enligt din redigering:
-
Synkronisering innebär att hålla båda data lika, Och för att uppnå detta måste du skapa en webbtjänst som hämtar data från din databas (lägg till en tidsstämpel för varje data som infogas i databasen och skicka den tillsammans med data du skickar till enheten) .
-
Medan du synkroniserar data hämta maxvärdet för tidsstämpeln från enhetens SQLite-databasen och skicka som en parameter medan du trycker på webbtjänsten från enheten, och skicka data som svar från servern som läggs till eller uppdateras efter den specifika tidsstämpeln som mottagits på begäran .
Så även om användaren raderade din app, kommer du inte att få någon tidsstämpel på begäran så skicka hela data.