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