3
한 번에 수천 개의 연락처를 추가하기 위해 ContentResolver.applyBatch 및 ContentResolver.bulkInsert 메서드를 사용하면 매우 느립니다. Android는 연락처를 일괄 적으로 추가하는 방식이 상당히 빠릅니다.프로그래밍 방식으로 수많은 Android 연락처를 대량으로 추가
지금까지 다음과 같은 접근 시도했습니다:
- 만들기 새로운 ContentValues는 반대 : 각 연락처에 대해
applyBatch 사용 (~ 75초 천 당 연락처)
을 원시 연락처를 나타내는
- RawContacts 테이블에 삽입 할 새 ContentProviderOperation을 빌드하십시오.
- 이 ContentValues에게 이름과 전화 번호 같은 다른 연락처 필드에 대한 객체를 생성 색인 목록에이 작업을 추가하고 저장
- 원시 연락처에 역 참조와 데이터 테이블에 이들 각각을 삽입하는 새로운 ContentProviderOperation 구축 ,
- 마지막으로 목록
에 이러한 작업을 추가 동작을 삽입 모든 작업을 적용 할 ContentResolver.applyBatch를 사용합니다. 각 연락처 bulkInsert (~ 40초 천 당 연락처)
를 사용
:
- 새로운 ContentValues이를 삽입
- 새로운 ContentProviderOperation을 구축 원시의 접촉을 표현하기 위해 객체 만들기 RawContacts 테이블에
- 이 작업을 목록에 추가하십시오.
그런 다음 ContentResolver.applyBatch를 사용하여 모든 작업을 적용하십시오. ContentProviderResults의 배열을 반환합니다. 지금
각 연락처 :- 대응 ContentProviderResult로부터 원시 접촉 ID 파싱.
- 데이터 테이블
질문에 이들을 삽입 원료 접촉 ID
- 두 번째 방법에서는 먼저 RawContacts 테이블 항목에 applyBatch를 수행 한 다음 Entried 된 Data 테이블에 대해 bulkInsert를 수행합니다. 그렇지 않으면 데이터 항목에 원시 연락처 ID를 제공하는 방법을 찾을 수 없기 때문입니다. RawContacts와 Data 항목을 동시에 추가 할 수있는 bulkInsert의 역 참조와 비슷한 것이 있습니까?
- applyBatch 및 bulkInsert는 트랜잭션이 너무 큼을 불평하기 전에 한 번에 많은 수의 삽입을 수행 할 수 있습니다. 결과적으로 그들은 500 명 정도의 접촉마다 적용되어야합니다. 이 한도를 변경할 수있는 방법이 있습니까?
- 한 번에 수천 개의 연락처를 추가하는 완전히 다른 방법이 있습니까?