* A content provider manages access to a central repository of data. * 기본적으로 Contacts 와 Calendar 의 data 에 접근이 가능하다. * ContentProviderOperation 은 ContentProvider 에 수행할 특정 operation(ex. insert, update, delete) 를 정의할 때 사용하는 객체이다. |
1) ContentProviderOperation 을 담는 ArrayList 를 만든다.
2) 각각의 ContentProviderOperation 을 정의한다.
- Data table 에 입력하는 ContentProviderOperation 의 경우, RAW_CONTACT_ID 에 Raw Contact 의 id를 넣어야 한다. 그러나 Raw Contact 에 데이터가 들어갈 예정일 뿐, 아직 들어간 게 아니므로, id를 조회해서 넣을 수 없다. 이때 .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 을 사용한다. 이때 '0' 의 의미는 '앞의 operation 이 성공한다면', 이란 의미이다.
- 이때, 한 사람의 연락처 입력과 관련된 ContentProviderOperation 의 마지막 ContentProviderOperation 에서 YieldPoint 를 지정한다.
ContentResolver 가 실제로 Contacts 의 여러 테이블에 데이터를 반영하는 applyBatch 를 수행할 때, 다른 process 들은 모두 block 되고, ContentResolver는 모든 ContentProviderOperation 이 끝난 후에 transaction을 수행한다. 입력하는 데이터가 많을 경우, 수행되는 동안 모든 process 들이 block 되기 때문에, 사용자들에게 불편을 줄 수 있다. 따라서 하나의 applyBatch 내에서 yieldPoint를 여러개 주게 되면, applyBatch 수행 도중 YieldPoint 를 만날 때마다, 다른 process 를 run 시키고, transaction을 수행한다. 따라서 related rows 입력이 끝날 때마다 Yield Point를 지정해주는 것이 좋다. |
3) ContentProviderOperation 을 build 해서 ArrayList에 담는다.
<<sample source>>
3. ContentResolver 의 applyBatch 수행
<<sample source>>
1. Content Provider Basics
2. Contacts Provider
http://developer.android.com/guide/topics/providers/contacts-provider.html
'Programming Practice > Android' 카테고리의 다른 글
[Contacts Provider]연락처 그룹 생성 및 입력 방법 (0) | 2014.10.26 |
---|---|
[Contacts Provider]연락처 기본 개념 (0) | 2014.10.26 |
SQLite database 에 데이터 저장하고 조회하기 (0) | 2014.10.18 |
한 화면에서 버튼을 눌렀을 때 다른 화면을 호출하기 (0) | 2014.10.17 |
화면에 리스트 목록 표시하기 (0) | 2014.10.17 |