FileDocCategorySizeDatePackage
VCardEntryCommitter.javaAPI DocAndroid 5.1 API3788Thu Mar 12 22:22:54 GMT 2015com.android.vcard

VCardEntryCommitter

public class VCardEntryCommitter extends Object implements VCardEntryHandler

{@link VCardEntryHandler} implementation which commits the entry to ContentResolver.

Note:
Each vCard may contain big photo images encoded by BASE64, If we store all vCard entries in memory, OutOfMemoryError may be thrown. Thus, this class push each VCard entry into ContentResolver immediately.

Fields Summary
public static String
LOG_TAG
private final android.content.ContentResolver
mContentResolver
private long
mTimeToCommit
private int
mCounter
private ArrayList
mOperationList
private final ArrayList
mCreatedUris
Constructors Summary
public VCardEntryCommitter(android.content.ContentResolver resolver)


       
        mContentResolver = resolver;
    
Methods Summary
public java.util.ArrayListgetCreatedUris()
Returns the list of created Uris. This list should not be modified by the caller as it is not a clone.

        return mCreatedUris;
    
public voidonEnd()

        if (mOperationList != null) {
            mCreatedUris.add(pushIntoContentResolver(mOperationList));
        }

        if (VCardConfig.showPerformanceLog()) {
            Log.d(LOG_TAG, String.format("time to commit entries: %d ms", mTimeToCommit));
        }
    
public voidonEntryCreated(VCardEntry vcardEntry)

        final long start = System.currentTimeMillis();
        mOperationList = vcardEntry.constructInsertOperations(mContentResolver, mOperationList);
        mCounter++;
        if (mCounter >= 20) {
            mCreatedUris.add(pushIntoContentResolver(mOperationList));
            mCounter = 0;
            mOperationList = null;
        }
        mTimeToCommit += System.currentTimeMillis() - start;
    
public voidonStart()

    
private android.net.UripushIntoContentResolver(java.util.ArrayList operationList)

        try {
            final ContentProviderResult[] results = mContentResolver.applyBatch(
                    ContactsContract.AUTHORITY, operationList);

            // the first result is always the raw_contact. return it's uri so
            // that it can be found later. do null checking for badly behaving
            // ContentResolvers
            return ((results == null || results.length == 0 || results[0] == null)
                            ? null : results[0].uri);
        } catch (RemoteException e) {
            Log.e(LOG_TAG, String.format("%s: %s", e.toString(), e.getMessage()));
            return null;
        } catch (OperationApplicationException e) {
            Log.e(LOG_TAG, String.format("%s: %s", e.toString(), e.getMessage()));
            return null;
        }