안드로이드 컨텐트 프로파이더 (Content Provider)

출처
Content providers | Android Developers
https://developer.android.com/guide/topics/providers/content-providers

요약
컨텐트 프로바이더는
  1. 다른 앱과 데이터를 공유하고
  2. 다른 앱이 내 앱에 데이터를 저장하거나
  3. 아니면 내 앱에서 데이터를 저장하는
기능을 제공한다.

특히 가장 핵심은 다른 앱에서 내 앱의 데이터를 securely 접근하고 수정할 수 있도록 기능을 제공해 준다는 것

또한 Content Provider가 데이터 관리를 추상화해 놓았기 때문에, 데이터 스토리지에 대한 구현방법이 바뀌어도 앱의 데이터를 사용하는 외부 앱에는 영향을 끼치지 않는다.

ContentProvider에 의존적인 클래스들은 아래와 같다.
  • AbstractThreadedSyncAdapter
  • CursorAdapter
  • CursorLoader

위 클래스를 사용하려면 이 클래스들이 의존하고 있는 Content Provider도 구현해야 한다. 또한 Sync Adapter Framework을 사용할 때도 stub content provider를 만들어야 한다.

이와 더불어, 아래의 경우 직접 Content Provider를 구현해야 한다.
  • 커스텀 서치를 구현하고자 할 때
  • 위젯에 데이터를 노출시키고 싶을 때
  • 만약 복잡한 데이터를 다른 앱에 copy and paste하고 싶을 때

안드로이드에서 audio, video, images를 관리하는 기본적으로 제공하는 CP도 있다. 관련자료는 여기에서 찾을 수 있다.

컨텐트 프로바이더는 다양한 데이터 스토리지 소스에 대한 접근을 관리하는데, 이에는 SQLite와 같은 구조화된 데이터 또는 이미지 파일과 같은 비정형 데이터를 포함한다. 자세한 내용은 Storage Options과 Desiging data storge를 확인