Server GCM není odpovědný za aktualizaci vaší databáze, můžete jej použít pouze k intimnímu spojení vaší aplikace, jo! na mém serveru je něco nového k aktualizaci, pojďme se připojit a stáhnout nová data. Šetří to spoustu baterie zařízení, kterou byste plýtvali při sdružování vašeho serveru po určitou definovanou interní dobu pro kontrolu dostupnosti aktualizace.
Můžete zadat pár klíč–hodnota pro zprávu json, kterou odesíláte do své aplikace z GCM, například
{"status" :"newupdate"}
a v onMessage() GCMReceiver můžete získat zprávu pomocí klíče "stav" z intentu a napsat logiku jako
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Pokud jste pro Sqlite Database noví, přejděte na tento tutoriál http://www.vogella.com/articles/AndroidSQLite/article.html
Chcete-li aktualizovat databázi, protože jste již implementovali třídu 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);
Podle vaší úpravy mi dovolte přidat několik bodů:
-
Synchronizace znamená udržovat obě data stejná, A abyste toho dosáhli, musíte vytvořit webovou službu, která bude načítat data z vaší databáze (přidat časové razítko pro každé údaje vložené do databáze a odeslat je spolu s daty, která odesíláte do zařízení) .
-
Při synchronizaci dat načtěte maximální hodnotu časového razítka z databáze sqlite zařízení a odešlete jako parametr při přístupu na webovou službu ze zařízení a odešlete data jako odpověď ze serveru, která jsou přidána nebo aktualizována po obdržení konkrétní časové značky v požadavku. .
Takže i když uživatel vaši aplikaci smaže, v časovém razítku žádosti nezískáte nic, takže odešlete celá data.