[4대 컴포넌트] Content Providers

dwjeong·2023년 9월 7일
0

안드로이드

목록 보기
4/28
post-custom-banner

🔎 컨텐츠 프로바이더란

앱 간의 데이터 공유 및 앱과 앱 저장소 사이의 데이터 접근을 쉽게 할 수 있게 사용되는 컴포넌트.

파일 시스템, SQLite 데이터베이스, 웹 혹은 앱이 액세스할 수 있는 기타 영구 저장 위치에 저장할 수 있는 앱 데이터의 집합을 관리.

예시) 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 컨텐츠 프로바이더를 제공.


위의 그림과 같이 다른 애플리케이션이 앱 데이터에 안전한게 액세스하고 수정할 수 있도록 컨텐츠 프로바이더를 구성할 수 있음.

데이터를 공유해야한다면 컨텐츠 프로바이더를 사용. 다른 앱에 영향을 주지 않고 앱의 데이터 저장소 구현을 수정할 수 있는 추상화 기능을 제공.

  • ContentProvider 클래스에 의존하는 어댑터
  1. AbstractThreadedSyncAdapter
  2. CursorAdapter
  3. CursorLoader

장점

데이터 액세스 권한을 세밀하게 제어할 수 있음. 애플리케이션 내에 있는 컨텐츠 프로바이더로만 액세스를 제한하거나, 다른 앱이 데이터에 액세스할 수 있는 권한을 부여하거나 데이터 읽기 및 쓰기에 대해 서로 다른 권한을 구성할 수 있음.


다른 컴포넌트와의 관계

위의 그림은 컨텐츠 프로바이더가 액세스를 조정하는 것을 나타냄.

  1. 다른 애플리케이션과 애플리케이션 데이터에 대한 액세스 권한 공유
  2. 위젯으로 데이터 보내기
  3. SearchRecentSuggestionsProvider를 사용하여 검색 프레임워크를 통해 앱의 맞춤 추천 검색어 반환.
  4. AbstractThreadedSyncAdapter의 구현을 사용하여 앱의 데이터를 서버와 동기화.
  5. CursorLoader를 사용하여 UI에 데이터 로드.

컨텐츠 프로바이더는 외부 애플리케이션에 관계형 데이터베이스 테이블과 유사한 하나 이상의 테이블로 데이터를 제공.

행은 특정 유형의 데이터 인스턴스를 나타내며 각 행의 열은 인스턴스에 대해 수집된 개별 데이터를 나타냄.



프로바이더에 액세스

UI의 액티비티나 프래그먼트는 쿼리에 대한 CursorLoader를 호출하고, CursorLoader가 ContentResolver를 사용하여 ContentProvider를 가져옴.

일반적으로 UI에서 ContentProvider에 액세스하는 방법은 CursorLoader를 사용하여 백그라운드에서 비동기 쿼리를 실행하는 것. 쿼리가 실행되는 동안 사용자는 UI를 계속 사용할 수 있음.

프로바이더 객체가 클라이언트로부터 데이터 요청을 수신하고 요청된 작업을 수행한 후 결과를 반환.
ContentResolver 메서드는 영구 저장소의 "CRUD" 기능을 제공.

post-custom-banner

0개의 댓글