Content Provider는 한 Process의 Data에 다른 Process에서 연결가능하도록 하는 표준 interface 이다.
[Application A_ContentResolver] <--> [Application B_ContentProvider] <--> [Application B_Data]
외부에서 Application B의 Data에 접근하기 위해서는 기본적으로 Application B에서 Content Provider의 구현이 필요하다. 즉, 외부에 Data 공유가 필요없다면 Content Provider를 제공하지 않아도 된다.
이렇게 외부에서 Data에 접근이 가능하도록 Content Provider가 제공된다면 접근하는 쪽에서는 Content Resolver 가 필요하다. 즉, Content Provider, Content Resolver간의 interface가 뚫리면 Data 접근이 가능하다.
Content Provider에 의해 보여지는 Data 는 Database에서의 tabke과 유사하게 구성되어 있다.
SQL의 CRUD 와 같은 기능을 제공하는데 위에서 언급한 것과 같이 ContentResolver를 통해 ContentProvider로 접근할 수 있다.
getContentResolver().query() : SELECT
getContentResolver().insert() : INSERT
getContentResolver().update() : UPDATE
getContentResolver().delete() : DELETE
[예]
// Queries the user dictionary and returns results
mCursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI, // The content URI of the words table
mProjection, // The columns to return for each row
mSelectionClause // Selection criteria
mSelectionArgs, // Selection criteria
mSortOrder); // The sort order for the returned rows
[developer.android.com]
Database의 select 문과 비교해 보면 다음과 같다.
UserDictionary.Words.CONTENT_URI : Table 이름 (from TableName)
mProjection : 표시할 column
mSelectionClause, mSelectionArgs : 조건절 (where col = value)
msortOrder : 정렬 기준 (order by col)
Content URI 형식
content://AUTHORITY/PATH
AUTHORITY : 제공자의 상징적인 이름(제공자의 권한)
PATH : 테이블을 가리키는 이름(경로)
[예]
content://user_dictionary/words
'Android' 카테고리의 다른 글
Android - ListView, CursorAdapter 그리고 _id (0) | 2016.01.14 |
---|---|
Android - SQLite 사용하기 (0) | 2016.01.12 |
Android - ListView and Adapter (0) | 2016.01.09 |
Android - Layout (레이아웃) (0) | 2016.01.08 |
Android - Services (서비스) (0) | 2016.01.05 |
Android - Tasks (작업) 그리고 BackStack (0) | 2016.01.05 |
Android - Fragment (플래그먼트) (0) | 2016.01.04 |
Android - Activity (액티비티) - Activity 이해 및 Lifecycle (0) | 2016.01.02 |