앱 간의 데이터 공유 및 앱과 앱 저장소 사이의 데이터 접근을 쉽게 할 수 있게 사용되는 컴포넌트.
파일 시스템, SQLite 데이터베이스, 웹 혹은 앱이 액세스할 수 있는 기타 영구 저장 위치에 저장할 수 있는 앱 데이터의 집합을 관리.
예시) 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 컨텐츠 프로바이더를 제공.
위의 그림과 같이 다른 애플리케이션이 앱 데이터에 안전한게 액세스하고 수정할 수 있도록 컨텐츠 프로바이더를 구성할 수 있음.
데이터를 공유해야한다면 컨텐츠 프로바이더를 사용. 다른 앱에 영향을 주지 않고 앱의 데이터 저장소 구현을 수정할 수 있는 추상화 기능을 제공.
데이터 액세스 권한을 세밀하게 제어할 수 있음. 애플리케이션 내에 있는 컨텐츠 프로바이더로만 액세스를 제한하거나, 다른 앱이 데이터에 액세스할 수 있는 권한을 부여하거나 데이터 읽기 및 쓰기에 대해 서로 다른 권한을 구성할 수 있음.
위의 그림은 컨텐츠 프로바이더가 액세스를 조정하는 것을 나타냄.
컨텐츠 프로바이더는 외부 애플리케이션에 관계형 데이터베이스 테이블과 유사한 하나 이상의 테이블로 데이터를 제공.
행은 특정 유형의 데이터 인스턴스를 나타내며 각 행의 열은 인스턴스에 대해 수집된 개별 데이터를 나타냄.
UI의 액티비티나 프래그먼트는 쿼리에 대한 CursorLoader를 호출하고, CursorLoader가 ContentResolver를 사용하여 ContentProvider를 가져옴.
일반적으로 UI에서 ContentProvider에 액세스하는 방법은 CursorLoader를 사용하여 백그라운드에서 비동기 쿼리를 실행하는 것. 쿼리가 실행되는 동안 사용자는 UI를 계속 사용할 수 있음.
프로바이더 객체가 클라이언트로부터 데이터 요청을 수신하고 요청된 작업을 수행한 후 결과를 반환.
ContentResolver 메서드는 영구 저장소의 "CRUD" 기능을 제공.