본문 바로가기
Android/Components

[안드로이드] App Components - Content Provider

by SungJe 2021. 6. 8.

Content Provider란?

안드로이드 개발자 사이트에서 Content Provider는 다음과 같이 설명하고 있다.

Content providers can help an application manage access to data stored by itself, stored by other apps, and provide a way to share data with other apps.
Link: Google Developer

즉, Content Provider는 애플리케이션의 저장된 데이터와 다른 앱이 저장한 데이터에 대한 액세스 권한을 관리하도록 돕고 데이터를 공유하는 방법을 제공한다.

Content Provider Overview

장점

  • 데이터 액세스 권한에 대한 세분화된 제어 기능을 제공한다. 자세한 내용은 콘텐츠 제공자 권한을 참조한다.

  • 애플리케이션에서 여러 가지 데이터 소스에 액세스하기 위한 세부 정보를 추상화할 수 있다.

  • CursorLoader 객체를 이용하여 비동기식 쿼리를 실행하고 애플리케이션의 UI 계층에 결과를 반환할 수 있다. 자세한 내용은 CursorLoader로 쿼리 실행을 참조한다.

제공자 액세스

  • Content Provider 내의 데이터에 액세스하고자 하는 경우, 애플리케이션의 Context에 있는 ContentResolver 객체를 사용하여 클라이언트로서 제공자와 통신을 주고 받는다. ContentResolver 메서드는 영구 저장소의 'CRUD'(Create, Retrieve, Update, Delete) 기능을 제공한다.

  • UI에서 Content Provider에 액세스하기 위한 일반적인 패턴에는 CursorLoader를 사용하여 백그라운데에서 비동기식 쿼리를 실행한다. UI의 Activity 또는 Fragment가 쿼리에 대해 CursorLoader를 호출하고 ContentResolver를 사용하여 ContentProvider를 가져온다. 이를 통해 쿼리를 실행하는 동안 사용자에게 UI를 계속 제공할 수 있다.

Content Provider Interaction

Content URI

콘텐츠 URI(Uniform Resource Identifier)는 제공자에서 데이터를 식별하는 통합 자원 식별자이다. 모든 제공자의 상징적인 이름(권한)과 테이블을 가리키는 이름(경로)이 포함된다.

Contnet URI 구조

content://authority/payh/id
  • content: URI의 계획 부분으로 항상 해당 값으로 되어있다. ContentResolver.SCHEME_CONTENT content://

  • authority: 모든 콘텐츠 공급자를 식별하는 문자열이다. 고유한 권한을 보장하기 위해, 제공자들은 제공자 클래스의 패키지 식별자와 동일한 권한을 사용하는 것을 고려해야 한다.

  • payh: 제공자의 데이터 부분 집합을 식별하는 슬래시로 구분된 0개 이상의 세그먼트이다. 대부분의 공급자는 경로 부분을 사용하여 개별 테이블을 식별한다.

  • id: 경로 부분으로 식별된 데이터 집합의 단일 행에 대한 고유한 숫자 식별자이다.

자세한 내용은 Reference를 참조한다.

참고 사이트