より大きな質問に対処することで、すべての質問に答えようとします。WebサーバーとAndroidアプリの間でデータを同期するにはどうすればよいですか?
ウェブサーバーとAndroidアプリ間でデータを同期するには、Androidデバイスにいくつかの異なるコンポーネントが必要です。
永続的ストレージ:
これは、携帯電話がウェブサーバーから受信したデータを実際に保存する方法です。これを実現するための1つの可能な方法は、Sqliteデータベースに基づく独自のカスタムContentProviderを作成することです。コンテンツプロバイダーの適切なチュートリアルは、http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/にあります。
A のContentProviderは、保存されたデータと対話するために一貫性のあるインターフェイスを定義します。また、必要に応じて、他のアプリケーションがデータを操作できるようにすることもできます。ContentProviderの背後には、Sqliteデータベース、キャッシュ、または任意のストレージメカニズムがあります。
SqliteデータベースでContentProviderを使用することをお勧めしますが、Javaベースのストレージメカニズムを使用することもできます。
データ交換フォーマット:
これは、ウェブサーバーとAndroidアプリ間でデータを送信するために使用する形式です。最近最も一般的な2つの形式は、XMLとJSONです。形式を選択するときは、利用可能なシリアル化ライブラリの種類を検討する必要があります。:私は、JSONシリアライズと呼ばれるgsonのための素晴らしいライブラリがあることを、ハンドオフ知っhttps://github.com/google/gsonを、私は同様のライブラリはXMLのために存在すると確信しているものの、。
同期サービス
サーバーから新しいデータを取得し、サーバーのコンテンツを反映するようにモバイルコンテンツを更新できる、何らかの非同期タスクが必要になります。また、コンテンツにローカルで変更を加え、それらの変更を反映したい場合は、サーバーに通知する必要があります。Androidは、このパターンを簡単に解決する方法としてSyncAdapterパターンを提供しています。ユーザーアカウントを登録する必要があります。そうすると、Androidが多くの魔法を実行し、自動的に同期できるようになります。これは良いチュートリアルです:http : //www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
レコードが同じかどうかを識別する方法については、通常、一意のIDでアイテムを作成し、Androidデバイスとサーバーの両方に保存します。これを使用して、同じ参照を参照していることを確認できます。さらに、「updated_at」のような列属性を保存して、常に最新のデータを取得していること、または誤って新しく書き込まれたデータを上書きしないようにすることができます。