使用ContentResolver.applyBatch和ContentResolver.bulkInsert方法一次性添加数千个联系人非常慢.

Android是否提供了批量添加联系人的不同方式,这种方式会更快?

到目前为止,我尝试了以下方法:

使用applyBatch(每千个联系人约75秒)

对于每个联系人:

>创建一个新的ContentValues对象以表示原始联系人

>构建一个新的ContentProviderOperation以将其插入到RawContacts表中

>将此操作添加到列表并存储其索引

>为名称和电话号码等其他联系人字段创建ContentValues对象

>构建一个新的ContentProviderOperation,将其中的每一个插入到Data表中,并对原始联系人插入操作进行反向引用

>将这些操作添加到列表中

最后,使用ContentResolver.applyBatch应用所有操作.

使用bulkInsert(每千个联系人约40秒)

对于每个联系人:

>创建一个新的ContentValues对象以表示原始联系人

>构建一个新的ContentProviderOperation以将其插入到RawContacts表中

>将此操作添加到列表中

然后,使用ContentResolver.applyBatch应用所有操作.这将返回ContentProviderResults数组.

现在,对于每个联系人:

>从相应的ContentProviderResult中解析原始联系人ID.

>为联系人的所有数据字段构造一个ContentValues对象数组,每个数据字段都包含原始联系人ID的字段

>使用ContentResolver.bulkInsert将这些插入到数据表中

问题

>在第二种方法中,我首先对RawContacts表条目执行applyBatch,然后为所委托的Data表执行bulkInsert.这是因为我无法想办法为数据条目提供原始联系人ID.是否有类似于bulkInsert的反向引用,允许我同时添加RawContacts和Data条目?

> applyBatch和bulkInsert只能在抱怨事务太大之前在一个批处理中执行这么多插入.因此,每隔500个联系人就必须应用它们.有没有办法改变这个限制?

>是否有一些完全不同的,更快速的方式一次添加数千个联系人?

android 通讯录 编程,以编程方式批量添加数千个Android联系人相关推荐

  1. springboot执行批量插入_springboot+Mybatis 注解\Xml两种方式批量添加数据

    1.使用注解的方式批量添加数据,在该方法中,传进来的参数是一个List集合,使用一个foreach 循环解析集合的数据,最后再批量保存到数据库,具体如下截图: 代码如下: //批量保存 @Insert ...

  2. 利用zabbix api批量添加数百台监控主机

    利用zabbix api批量添加监控主机 在公司规模很庞大的时候,每次都手动添加监控主机将会很麻烦,我们可以利用zabbix的api去批量添加监控主机 本次我们将实现用一台主机虚拟出100台主机,并通 ...

  3. android+主界面所有应用程序图标添加统一背景主题,Android 4.0替Launcher主界面所有应用程序图标添加统一背景主题...

    当前位置:我的异常网» Android » Android 4.0替Launcher主界面所有应用程序图标添加 Android 4.0替Launcher主界面所有应用程序图标添加统一背景主题 www. ...

  4. android gdx 放进布局,将LibGDX添加到现有的Android Studio项目中

    将LibGDX添加到现有Android Studio项目的最佳方法是什么? 因为Android Studio已经内置了Gradle,所以我假设可以更改build.gradle文件中的某些代码以将Lib ...

  5. 通过WordPress内置函数批量添加文章

    http://www.php.cn/blog/detail/2482.html 最近业务需要在网站上批量添加大量的文章.一篇一篇地手动添加绝对会搞死我,所以,我就开始寻找批量添加的方法.其实,文章的相 ...

  6. android+双卡imei,以编程方式在Android中为双SIM卡检索IMEI号码

    对于单个SIM,以下代码有效: TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String ...

  7. Android 反射 换一种方式编程

    Android 反射-换一种方式编程 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/59109933 本文出自[赵彦军的博客] 上一 ...

  8. 如何在Android按钮上以编程方式设置drawableLeft?

    本文翻译自:How to programmatically set drawableLeft on Android button? I'm dynamically creating buttons. ...

  9. Android批量添加联系人到通讯录

    由于工作上的需要,把数据库中备份的联系人添加到通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率就降低了,如果把所有的数据都添加进去后再commit效率就不一样,这就需要事务 ...

最新文章

  1. ValueError: The data property of a figure may only be assigned a list or tuple that contains a .....
  2. python生日贺卡制作以及细节问题的解决最后把python项目发布为exe可执行程序过程
  3. Python ndarray.strides用法
  4. 第九天2017/04/18(1、友元函数、运算符重载)
  5. 转: 基于elk 实现nginx日志收集与数据分析
  6. Qt (5.10.0)for android
  7. 『转载』hadoop2.x常用端口、定义方法及默认端口
  8. 【华为云技术分享】使用Python连接Kerberos的Presto
  9. 基于spi FLASH的嵌入式文件系统 littlefs(转)
  10. “Hyperledger Fabric 是假区块链!”
  11. 单向关系中的JoinColumn
  12. 从一句SQL得出的启示
  13. Android MediaPlayer 属性
  14. Java打印菱形(一)
  15. 【AD封装】电感(带3D)
  16. 灰色关联分析与预测模型
  17. python使用phone实现手机号归属地查询
  18. GB与BIG5内码转换COM原代码
  19. 香港美国CERA机房你怎么选择?
  20. 亚洲及中国全国境内雷电闪电数据采集程序服务部署+接口调用说明

热门文章

  1. 动态平衡网格交易_BiKi ETF网格交易 波段套利工具
  2. 自动化测试系列(六)--自动化成熟度等级
  3. 转载:深度学习和缠论应用,JQData应用
  4. MyBatis框架简单实现
  5. 数据库连接池 (DBCP、c3p0、Druid) 配置说明和对比
  6. 如何自己创建一个网站?
  7. 张朝阳:诚惶诚恐才能生存
  8. TeraTerm SSH 登陆(出现连接被拒绝的解决办法)
  9. 无密码卸载Symantec Endpoint Protection 11
  10. rk3288 lvds TF卡修改屏参