android 联系人数据库
ContentProviders 是android 系统核心组件之一,ContentProviders 封装了数据的访问接口
有时候需要更新多行数据,可以选择调用多次ContentResolver的对应函数,或者 使用批量操作。当然 后者性能会比较好些
为了使批量更新、插入、删除数据更加方便,android系统引入了 ContentProviderOperation类
推荐使用ContentProviderOperations,有一下原因:
所有的操作都在一个事务中执行,这样可以保证数据完整性
由于批量操作在一个事务中执行,只需要打开和关闭一个事务,比多次打开关闭多个事务性能要好些
http://www.cnblogs.com/wlrhnh/p/3477252.html
http://blog.csdn.net/imuhao/article/details/52002995
ContentProviders 是android 系统核心组件之一,ContentProviders 封装了数据的访问接口
有时候需要更新多行数据,可以选择调用多次ContentResolver的对应函数,或者 使用批量操作。当然 后者性能会比较好些
为了使批量更新、插入、删除数据更加方便,android系统引入了 ContentProviderOperation类
推荐使用ContentProviderOperations,有一下原因:
所有的操作都在一个事务中执行,这样可以保证数据完整性
由于批量操作在一个事务中执行,只需要打开和关闭一个事务,比多次打开关闭多个事务性能要好些
使用批量操作和多次单个操作相比,减少了应用和contentprovider之间的上下文切换,这样也会提升应用的性能,并且减少占用CPU的时间,当然也会减少电量的消耗。
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
删除操作
ops.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Contacts.Data.RAW_CONTACT_ID + "=" + rawContactId, null)
.build());
插入操作(备注)
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId)
.withValue(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Note.NOTE, remark.trim())
.build());
插入操作(群组)
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId)
.withValue(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, groupLists.get(i).trim())
.build());
插入操作(地址)
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId)
.withValue(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, contactAddress.trim())
.build());
插入操作(姓名)
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValue(ContactsContract.Contacts.Data.RAW_CONTACT_ID, rawContactId)
.withValue(ContactsContract.Contacts.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, contactName.trim())
.build());
ContentProviderResult[] results = null;
if (ops.size() > 0){
results = resolver.applyBatch(ContactsContract.AUTHORITY, ops);
}
http://www.cnblogs.com/wlrhnh/p/3477252.html
http://blog.csdn.net/imuhao/article/details/52002995