JuHyang
Android Content Provider 본문
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 |