sql >> Databasteknik >  >> RDS >> SQLite

Android - uppdatera klientens SQLite-databas med GCM

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:

  1. 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) .

  2. 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.



  1. Bästa sättet att INFOGA många värden i mysqli?

  2. Är sp_-prefixet fortfarande ett nej-nej?

  3. Att flytta från MySQL 5.7 till MySQL 8.0 - Vad du bör veta

  4. Hur kan jag extrahera filer från ett Oracle BLOB-fält?