2012-05-24 3 views
0

내 응용 프로그램에서 나는 많은 양의 연락처를 만들어야합니다.많은 수의 연락처를 만드는 가장 빠른 방법은 무엇입니까?

내가 currenly 사용하는 코드 : 코드는 완벽하게 작동 접점의 일부 금액에 대한

 ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 
     ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accounts[0].type) 
       .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accounts[0].name) 
       .build()); 
     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name) 
         .build()); 
     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number) 
         .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME) 
         .build()); 
     ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 
       .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
       .withValue(ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
         .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number) 
         .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) 
         .build()); 


     try { 
      cr.applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (OperationApplicationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

,하지만 난 다음 천천히이 코드 workt를 많은 양을 만드는 경우. 따라서 내 질문 : 많은 연락처를 만드는 가장 빠른 방법은 무엇입니까?

미리 감사드립니다. 제안 사항은 언제든지 환영합니다.

+0

당신이 얼마나 많은 접촉이 필요합니까를? 이 연락처를 얼마나 빨리로드 하시겠습니까? –

답변

0

gmail과 동기화 할 수있는 경우 gmail.com에서 연락처를 CSV로 가져 와서 휴대 전화와 동기화 할 수 있습니다.

아니면 그냥이 비슷한 질문을 참조하십시오 Insertion of thousands of contact entries using applyBatch is slow

+0

ContactsContract에 대한 Google 동기화 어댑터에서 이러한 연락처를 ContactsProvider (일괄 처리 사용)에 추가 할 수도 있습니다. 실제 속도는 개선되지 않았습니다. – Jens

+0

@ Jens, 속도 향상은 솔루션 시간을 개발하는 데 큰 CSV를 생성하는 것은 사소하고 Google에서 만든 동기화 알고리즘이 최적이어야합니다. –

+0

그러나 그의 질문에는 붙여 넣은 예제에서 볼 수 있듯이 "임의의 계정에 새 연락처를 삽입하는 데 필요한"ContentProviderOperation이 이미 있습니다. Google의 동기화 작업은 델타 동기화 일 가능성이 가장 높습니다. 즉, 마지막 동기화 이후 변경 사항, 즉 ** 수행 할 작업과 동일한 작업이지만 ** HTTP, 프로토콜 및 구문 분석의 오버 헤드가 추가됩니다. – Jens

관련 문제