jestem w stanie doskonale dodać kontakty jeden po drugim z następującego kodu:Dodaj kilka kontaktów w partii
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());
ops.add(ContentProviderOperation
.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,
CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.GIVEN_NAME, "Hello")
.withValue(StructuredName.FAMILY_NAME, "World").build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Jednak gdy próbuję dodać około 500 kontakty jeden po drugim - to trwa kilka minut, co jest za długo na moją aplikację. Czy jest jakikolwiek szybszy sposób dodania kilku kontaktów?
Można dodać je w wątku, a nie w wątku interfejsu użytkownika. – Phil
Robię to w osobnym wątku, problemem jest to, że sama operacja zajmuje zbyt dużo czasu. W przypadku iPhone'a potrzeba kilku sekund na 500 kontaktów. – lstipakov
Robię to w podobny sposób, ale robię partie za każdym razem, gdy chcę dodać kontakt. Nie wydaje mi się, żeby to była właściwa droga, ale wygląda na to, że działa dobrze –