GCMサーバーはデータベースを更新する責任を負いません。それを使用して、アプリを親密にすることができます。サーバーに更新する新しいものがあります。接続して新しいデータをダウンロードできます。これにより、更新の可用性を確認するために内部で定義された時間にサーバーをプールする際に浪費するデバイスのバッテリーを大幅に節約できます。
GCMからアプリに送信するjsonメッセージのキー値を
{"status": "newupdate"}
GCMReceiverのonMessage()では、インテントからキー「status」でメッセージを取得し、
のようなロジックを記述できます。if(message.equalsIgnoreCase("newupdate"){
//Call a service and download the data and store/update in your databse
}
Sqlite Databaseを初めて使用する場合は、このチュートリアルに進んでくださいhttp://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);
編集に従って、いくつかのポイントを追加させてください:
-
同期とは、両方のデータを同じに保つことを意味します。これを実現するには、データベースからデータをフェッチするWebサービスを作成する必要があります(データベースに挿入されたデータごとにタイムスタンプを追加し、デバイスに送信するデータと一緒に送信します)。 。
-
データの同期中に、デバイスのsqliteデータベースからタイムスタンプの最大値をフェッチし、デバイスからWebサービスにアクセスするときにパラメーターとして送信し、要求で受信した特定のタイムスタンプの後に追加または更新されたデータをサーバーから送信します。
そのため、ユーザーがアプリを削除した場合でも、リクエストのタイムスタンプには何も表示されないため、データ全体を送信してください。