请问如何加快读取和搜索联系人的速度和效率?
Closed this issue · 4 comments
Lsy1992 commented
目前我的测试手机有6000+联系人,发现demo读取的速度竟然达到了7.57秒。还有搜索的时候进行删除会卡顿;
还有一个疑问就是可以同时T9搜索到通话记录的号码和联系人吗?就像触宝电话那种怎么做啊。
还请您指点一二,谢谢!
Lsy1992 commented
上网查询后发现用LoaderManager.LoaderCallbacks方法来读取联系人 比AsyncTask更加迅速。
测试后6000个联系人读取完毕只需要40毫秒
handsomezhou commented
1.数据加载优化
看来你用LoaderManager.LoaderCallbacks来加载数据优化的不错.
demo中是将数据的“加载”和“解析”放在一起的,可以将联系人数据加载完显示后,再去异步解析联系人数据,这样会显得加载联系人更快.
2.搜索的时候进行删除会卡顿
联系人数据单条匹配的时间是一定的,demo中联系人搜索不是异步的,由于你联系人数据比较多,没搜索完成,所以会卡顿.可以尝试异步搜索(建议对联系人在一定数量内用同步,超过一定数量用异步).
3.同时T9搜索到通话记录的号码和联系人
其实是搜索为空时,显示通话记录界面;搜索不为空时,显示联系人界面.
可以参考:XContacts
Ps:建议用PinyinSearchLibrary来替换T9SearchLibrary
Lsy1992 commented
谢谢。PinyinSearchLibrary这个相对来讲是属于T9SearchLibrary的增强版吗? 我只需要用到拨号盘T9搜索的功能
handsomezhou commented
PinyinSearch=T9Search+QwertySearch.
确定不需要Qwerty Search也没问题.