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

使用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个联系人就必须应用它们.有没有办法改变这个限制?

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值