Сървърът на GCM не носи отговорност да актуализира вашата база данни, можете да я използвате само за да напомните на приложението си, че, йо! има нещо ново на моя сървър за актуализиране, нека се свържем и изтеглим нови данни. Това спестява много батерия на устройството, която бихте загубили, за да обединявате сървъра си за определено вътрешно време за проверка на наличността на актуализация.
Можете да посочите ключ-стойност за json съобщение, което изпращате към приложението си от GCM като
{"status" :"newupdate"}
и в onMessage() на GCMReceiver можете да получите съобщението по ключ "status" от намерение и да напишете логика като
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Отидете на този урок, ако сте нов за Sqlite Databasehttp://www.vogella.com/articles/AndroidSQLite/article.html
За да актуализирате базата данни, като се има предвид, че вече сте внедрили клас 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);
Съгласно вашата редакция позволете ми да добавя няколко точки:
-
Синхронизирането означава запазване на двете данни еднакви и за да постигнете това, трябва да създадете уеб услуга, която ще извлича данните от вашата база данни (добавете времева марка за всяка вмъкната в базата данни и я изпратите заедно с данните, които изпращате до устройството) .
-
Докато синхронизирате данните, извличайте максималната стойност на времеви печат от базата данни на устройството sqlite и изпращайте като параметър, докато удряте уеб услугата от устройството, и изпращайте данни в отговор от сървъра, които се добавят или актуализират след това конкретно времеви печат, получен в заявката .
Така че дори ако потребителят е изтрил приложението ви, няма да получите нищо в времевата марка на заявката, за да изпратите цели данни.