나는 더 큰 문제를 해결하여 모든 질문에 대답하려고합니다 : 웹 서버와 안드로이드 응용 프로그램 사이에 내가 어떻게 동기화 데이터를?
웹 서버와 안드로이드 앱간에 데이터를 동기화하려면 안드로이드 장치에 몇 가지 다른 구성 요소가 필요합니다.
영구 스토리지 :
이것은 휴대 전화가 웹 서버에서 수신 한 데이터를 실제로 저장하는 방법입니다. 이를 수행하는 한 가지 가능한 방법 은 Sqlite 데이터베이스가 지원하는 사용자 정의 ContentProvider를 작성하는 것 입니다. 콘텐츠 제공 업체를위한 훌륭한 튜토리얼은 여기 ( http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/) 에서 찾을 수 있습니다.
컨텐트 프로는 저장된 데이터와 상호 작용하는 일관된 인터페이스를 정의합니다. 원하는 경우 다른 응용 프로그램이 데이터와 상호 작용할 수도 있습니다. ContentProvider 뒤에는 Sqlite 데이터베이스, 캐시 또는 임의의 스토리지 메커니즘이있을 수 있습니다.
Sqlite 데이터베이스와 함께 ContentProvider 를 사용하는 것이 좋습니다 . 원하는 Java 기반 저장 메커니즘을 사용할 수 있습니다.
데이터 교환 형식 :
이것은 웹 서버와 안드로이드 앱간에 데이터를 보내는 데 사용하는 형식입니다. 요즘 가장 인기있는 두 가지 형식은 XML과 JSON입니다. 형식을 선택할 때는 어떤 종류의 직렬화 라이브러리를 사용할 수 있는지 고려해야합니다. 나는 XML에 대해 비슷한 라이브러리가 있다고 확신하지만 gson : https://github.com/google/gson 이라는 환상적인 json 직렬화 라이브러리가 있다는 것을 알고 있습니다 .
동기화 서비스
서버에서 새 데이터를 가져오고 서버의 내용을 반영하도록 모바일 내용을 새로 고칠 수있는 일종의 비동기 작업이 필요합니다. 컨텐츠를 로컬로 변경하고 해당 변경 사항을 반영 할 때마다 서버에 알리려고합니다. Android는 이 패턴을 쉽게 해결할 수있는 방법으로 SyncAdapter 패턴을 제공합니다 . 사용자 계정을 등록해야합니다. 그러면 Android에서 많은 마법을 수행하고 자동으로 동기화 할 수 있습니다. 다음은 좋은 자습서입니다. http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
레코드가 동일한 지 식별하는 방법에 관해서는 일반적으로 안드로이드 장치와 서버 모두에 저장하는 고유 ID를 가진 항목을 생성합니다. 이를 사용하여 동일한 참조를 참조하고 있는지 확인할 수 있습니다. 또한 "updated_at"와 같은 열 속성을 저장하여 항상 최신 데이터를 얻거나 실수로 새로 쓴 데이터를 덮어 쓰지 않도록 할 수 있습니다.