android - ContentResolver类的几个重点方法.


ContentResolver 常用来操作内置数据库.


在用此类插入数据库的时候, 尝尝使用的是 insert. 

但是这个操作速度极慢.(因为此函数是能确保插入结果,所以每一次操作都是一个事物)


有两种办法提高插入效率:

1> 使用 ".bulkInsert()" 可以一次插入多个.


2> ".applyBatch();" 也可以一次插入多个.



下面是applyBatch 示范代码:  (bulkInsert就不用示范吧?)





	ArrayList<ContentProviderOperation> ops =new ArrayList<ContentProviderOperation>();
	int rawContactInsertIndex = ops.size();
	ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
	          .withValue(RawContacts.ACCOUNT_TYPE, null)
	          .withValue(RawContacts.ACCOUNT_NAME, null)
	          .build());

	 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
	          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
	          .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) // "vnd.android.cursor.item/name"
	          .withValue(StructuredName.FAMILY_NAME, "aaaaaaaa")
	          .build());StructuredName.

	 
	 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
	          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
	          .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
	          .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "1111111111111")
	          .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM)
	          .withValue(ContactsContract.CommonDataKinds.Phone.LABEL, "x手机号x")
	          .build());
	 
	 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
	          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
	          .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
	          .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "222222222")
	          .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM)
	          .withValue(ContactsContract.CommonDataKinds.Phone.LABEL, "o手机号o")
	          .build());
	 
		//		 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
		//		          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
		//		          .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE)
		//		          .withValue(Email.DATA, "xxx@xx.x")
		//		          .withValue(Email.TYPE, Email.TYPE_WORK)
		//		          .build());
			  
       ContentProviderResult[] results;
	try {
		results = mContext.getContentResolver()
		            .applyBatch(ContactsContract.AUTHORITY, ops);
		 for(ContentProviderResult result : results) {
        	 Log.i("XXXX", result.uri.toString());
         }
	} catch (RemoteException e) {
		e.printStackTrace();
	} catch (OperationApplicationException e) {
		e.printStackTrace();
	}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值