2017-12-19 1 views
-1

방금 ​​튜토리얼 developer.android.com에 따라 공급자 기능 "서버 db와 로컬 db 간의 동기화"및 피 묻은 시행 착오 후 그것을 성공적으로 (onPerformSync 성공적으로 호출했습니다) 관리 할 동기화 어댑터를 만드는 방법을 따릅니다.콘텐츠 제공 업체 란 무엇입니까?

이제 몇 가지 기사에서 읽은 것으로부터 다음 단계로 동기화 기능을 만들려면 content provider을 만들어야합니다. 나는 이미 https://developer.android.com/guide/topics/providers/content-provider-basics.html을 읽었지만, 아직도 어떻게 작동하는지 알지 못한다.

  1. 사람들이 무엇에 관해 얘기하는지 table :이 링크 https://developer.android.com/guide/topics/providers/content-provider-basics.html에서

    , 그것은 내 머리 속에 몇 가지 질문을 제기? 그들은 sqlite 테이블 또는 일부 "다른"테이블에 대해 이야기하고 있습니까?

  2. content://user_dictionary/words uri가 무엇입니까? 테이블 파일에이 uri가 저장된 sqlite는 무엇입니까? 그것이 사실이라면 어떻게 알 수 있습니까? 내가 만든 sqlite store 테이블은 어디에 있었습니까?

  3. 내가 읽은 것 (내가 맞다면), ContentProvider를 저장소와 똑같이 읽었습니다. 그들은 동일한 기능을 가지고 있습니까? 이미 anko https://gist.github.com/mockiemockiz/a552a669d28a3c90c144bc1542b86a5e을 사용하여 내 리포지토리를 만들었습니까? 해당 코드를 사용하여 해당 코드를 ContentProvider로 변환하여 데이터가 변경된 동기화 어댑터에 알릴 수 있습니까?

답변

2

난 그냥 제공 기능에 "서버 DB 로컬 DB 간의 동기화를"동기화 어댑터를 만들 developer.android.com에서 튜토리얼을 따라, 그리고 피 묻은 시행 착오 후에 나는 (그것이 작동 onPerformSync를 만들기 위해 관리 성공적으로 호출되었습니다).

FWIW, SyncAdapter은별로 인기가 없습니다.

그들은 어떤 테이블에 대해 이야기하고 있습니까?

단어 "table"은 해당 페이지에서 40 번 나타납니다. 우리는 당신이 우려하는 40 가지를 알 수있는 방법이 없으며 여러 가지 방법으로이 용어를 사용합니다.

uri가 무엇입니까? user_dictionaryContentProvider 데이터의 집합 ("테이블")에 Uri 가리키는

.

이 uri는 sqlite가 저장된 테이블 파일입니다.

이것은 개발자가 결정할 ContentProvider입니다. ContentProvider API는 데이터가 저장되는 위치를 규정하지 않습니다. SQLite 또는 JSON 파일에 저장 될 수 있습니다. 협약ContentProvider에 의해 노출 된 데이터 컬렉션이 SQLite 테이블 또는 뷰에 매핑되지만 필수는 아니라고 말합니다.

그렇다면 내 것을 어떻게 알 수 있습니까?

당신은 당신이 당신의 기관 (매니페스트에서 <provider> 요소에 android:authorities 참조)로 user_dictionary를 사용하는 경우, 그것은 당신의 ContentProvider 알고있다.

내가 만든 sqlite 스토어 테이블은 어디에 있습니까?

이는 귀하에게 달려 있습니다. ContentProvider은 SQLite와 아무 관련이 없습니다. ContentProvider 구현을 SQLite에 연결하는 코드를 작성하십시오. 단지 저장소와 같은

컨텐트 프로

별로, 적어도 나는 용어 ​​"저장소"를 사용하는 방법의 측면이다. ContentProvider은 외부 당사자가 해당 데이터에 대한 액세스를 제어 할 수 있도록 일부 데이터 저장 메커니즘을 감싸는 래퍼입니다.

내가 코드를 사용할 수 있습니까?/동기화 코드를 알릴 수있는 ContentProvider로 코드를 변환 할 수 있습니까?

다소 어려울 것입니다. 이것이 소수의 개발자가 SyncAdapter을 사용하는 이유 중 하나입니다.

+0

아하하니, syncadapter를 사용하는 것 외에 다른 옵션이 있습니까? 파이어 스토어? 나는 우리가 no-sql을 사용하여 마이그레이션 할 준비가되었다고 생각하지 않는다. – Kakashi

+0

@ 카카시 : "syncadapter를 사용하는 것 외에 다른 옵션이 있습니까?" - 서버가 지원하는 프로토콜 (예 : REST, GraphQL)을 사용하여 서버와 통신합니다. 'AlarmManager' 또는'JobScheduler'를 사용하여 작업을 스케쥴합니다. – CommonsWare

관련 문제