今天看公司代码,发现在批量插入通话记录和联系人的时候,用了一个

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

  这是一个批量插入的列表。

ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE,
null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME,
null).withYieldAllowed(true).build());
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(
ContactsContract.Data.RAW_CONTACT_ID,
rawContactInsertIndex)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
name).withYieldAllowed(true).build());

  然后调用内容提供者来执行批量操作。

resolver.applyBatch(ContactsContract.AUTHORITY, ops);
ops.clear();

  这样做相比一次次的迭代循环操作,有一些性能上的优势。

  因为,这样是一个事物,保证数据完整性,而且减少了上下文的切换。具体的用法见代码。常量的话,替换成自己需要的就可以了。不过这主要针对有Content Provider的才能做,如果是是对数据库的操作,那就直接对数据库操作可能更直接些。

最新文章

  1. PostgreSQL 锁监控
  2. 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)
  3. Python第二模块(文件和函数)
  4. 技术专题-PHP代码审计
  5. 边界网关协议BGP
  6. 【BZOJ-4386】Wycieczki DP + 矩阵乘法
  7. IOS - NSURLSession
  8. UIKit-3347.44.2/UICollectionView.m:3443
  9. csdn第九名
  10. java指针
  11. “-bash: svn: command not found”
  12. Android Checkbox Example
  13. 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移
  14. 常用财务软件:用友,金蝶,新中大,速达,管家婆,金算盘,远方,远光,金钥匙,润衡,浪潮,上海博科,易商,任我行,千方百剂,智管,小蜜蜂,SAP,ORACLE,SSA,QAD,MAPICS,JDE。
  15. Html网页的代码
  16. 数字规律:Pascal‘s triangle
  17. Hdu2680 最短路
  18. 【题解】Luogu P2221 [HAOI2012]高速公路
  19. git 的安装与初始化
  20. 从零开始学spring cloud(十) -------- hystrix简单代码示例

热门文章

  1. 如何在VS 2010中使用 VS2013的解决方案
  2. udhcpc和udhcpd移植
  3. PS CS5如何在一张图片里插入另一张图片?
  4. HDU-1026 Ignatius and the Princess I(BFS) 带路径的广搜
  5. Monkey的简单自动化
  6. NodeJS 框架 Express 从 3.0升级至4.0的新特性
  7. swift Swauth install
  8. Linux vim的一些命令
  9. c#文件转化byte数组
  10. Docker系列(四)Dockerfile