JuHyang

Android Content Provider 본문

Android/Theory

Android Content Provider

Ju_Hyang 2019. 12. 7. 22:48
 
Content Provider 
  • 앱과 앱 저장소 사이에서 데이터 접근을 쉽게 하도록 관리해주는 클래스.
    • 왜 사용할까 ?
      • 앱의 직접적인 코드 변경 없이 데이터 접근 / 변경 할 수 있도록 해줌.
      • Loader 나 CursorAdapter 같은 클래스들도 사용하기 떄문
      • 다른 사용자들이 앱에 접근, 사용, 수정할 권한을 준다 (안전 하게)
    • Manifest 에서 권한을 부여해 주어야 한다.
 
Content Resolver
  • 폰 안에 여러 앱, 여러 프로바이더가 있기 때문에 이들을 관리하고 흐름을 통제, 앱이 접근하고자 하는 프로바이더 사이에서 중개자 역할.
  • query (읽기), insert, update, delete 작업이 가능.
 
Content Provider 사용
  • 우선 manifest에 등록해야 한다. application 안에 및 name, authority 등록
  • Uri에 자주 쓰이는 Schema, authority, path 등은 String 및 Uri 변수로 설정.
    • 여러곳에서 쓰기 위해 private static String / Uri 로 선언하는게 편하다.
  • 예를 들어, 앱 내에 사용되는 Uri 가 content://authority와 content://authority/path 두가지라면 각각의 경우에 다른 처리가 필요하다. 이를 만약 if 문으로 구분하게 되면 경우의 수가 많아짐으로 ‘UriMatcher’를 사용한다.
 
UriMathcer
  • Content Provider가 받는 Uri의 종류를 결정해준다.
  • 사용자가 Uri1 / Uri2 를 구분해놓고, 상수 와일드카드 (#) 사용할 수 있다.
  • UriMatcher 함수 안에서 NO MATCH 및 추가 MATCH 등록하여 사용하면 편리.
  • 참고) UI에서 데이터를 query(읽기) 할 경우 Resolver를 가져와 query 메소드 호출 (Uri 같이 전달) -> Uri의 Authority를 확인하여 매치되는 Provider를 찾아 쿼리를 전달 -> 쿼리함수에서 UriMatcher를 사용해 가져올 데이터 종류 확인
  • -> Uri와 기타 파라미터를 해독해 알맞은 SQL코드 작성 -> 해당되는 Data 가져옴 -> Cursor 반환
 
Content Provider 메소드
  • 6개의 메소드를 Override 한다.
    • OnCreate (void)
    • insert (return Uri)
    • query (return Cursor)
    • update (return int)
    • delete (return int)
    • getType (return String)
 

'Android > Theory' 카테고리의 다른 글

Activity  (0) 2021.05.05
Android 4대 컴포넌트  (0) 2021.05.05
Android MVVM Pattern  (0) 2020.05.18
Android Content Provider - 안드로이드 공식 개발자 문서  (0) 2019.12.07
Android MVP Pattern  (0) 2019.07.15