相关疑难解决方法(0)

使用applyBatch插入数千个联系人条目的速度很慢

我正在开发一个应用程序,我需要插入大量的联系人条目.目前约有600个联系人,共有6000个电话号码.最大的联系人有1800个电话号码.

截至今天的状态是我创建了一个自定义帐户来保存联系人,因此用户可以选择在"联系人"视图中查看联系人.

但插入触点非常缓慢.我使用ContentResolver.applyBatch插入联系人.我尝试了不同大小的ContentProviderOperation列表(100,200,400),但总运行时间约为.相同.插入所有联系人和号码大约需要30分钟!

我发现在SQlite中缓慢插入的大多数问题都会导致交易.但是因为我使用ContentResolver.applyBatch方法,所以我不控制它,我会假设ContentResolver为我负责事务管理.

所以,我的问题是:我做错了什么,或者我能做些什么来加快这个速度?

安德斯

编辑: @jcwenger:哦,我明白了.很好的解释!

那么我将首先插入raw_contacts表,然后插入带有名称和数字的数据表.我将失去的是对我在applyBatch中使用的raw_id的后向引用.

所以我必须获取新插入的raw_contacts行的所有id作为数据表中的外键吗?

android android-contentresolver android-contentprovider

35
推荐指数
2
解决办法
2万
查看次数