Serwer GCM nie jest odpowiedzialny za aktualizację Twojej bazy danych, możesz go użyć tylko do intymności swojej aplikacji, tak! jest coś nowego na moim serwerze do aktualizacji, połączmy się i pobierzmy nowe dane. Oszczędza to dużo baterii urządzenia, które marnowałbyś na łączenie serwera w określonym czasie wewnętrznym w celu sprawdzenia dostępności aktualizacji.
Możesz określić parę klucz-wartość wiadomości json, którą wysyłasz do swojej aplikacji z GCM, np.
{"status" :"newupdate"}
a w onMessage() GCMReceiver możesz pobrać wiadomość za pomocą klawisza „status” od intencji i napisać logikę, taką jak
if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Przejdź do tego samouczka, jeśli jesteś nowym użytkownikiem bazy danych Sqlitehttp://www.vogella.com/articles/AndroidSQLite/article.html
Aby zaktualizować bazę danych, biorąc pod uwagę, że już zaimplementowałeś klasę 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);
Zgodnie z Twoją edycją pozwól mi dodać kilka punktów:
-
Synchronizacja oznacza utrzymywanie obu danych bez zmian. Aby to osiągnąć, musisz stworzyć serwis internetowy, który będzie pobierał dane z Twojej bazy danych (dodaj znacznik czasu dla każdego wprowadzonego do bazy danych i wyślij go wraz z danymi, które wysyłasz do urządzenia) .
-
Podczas synchronizacji danych pobierz maksymalną wartość znacznika czasu z bazy danych sqlite urządzenia i wyślij jako parametr podczas nawiązywania połączenia z usługą sieciową z urządzenia oraz wyślij dane w odpowiedzi z serwera, które są dodawane lub aktualizowane po tym konkretnym znaczniku czasu odebranym w żądaniu .
Więc nawet jeśli użytkownik usunął Twoją aplikację, nie dostaniesz żadnego znacznika czasu żądania, więc wyślij całe dane.