如何更快地阅读Android中的所有手机通讯录?

时间:2015-06-09 11:33:21

标签: android multithreading android-contacts android-contentresolver

我正在处理一个应用程序(API> 15),它会读取所有手机通讯录,然后建议所有申请人。

所需数据:
1.电话号码
2.电子邮件ID

流程为:
1.阅读所有手机联系人
2.将它们发送到服务器
3.与现有联系人匹配 4.将匹配的联系人发回客户端
5.建议用户这些联系人。

现在问题是我的手机中有近2000个联系人。为此,它需要46秒。这太多了。我不能让用户等待这么多。

可能的解决方案:
使用不同的线程读取几批200个触点中的触点。并行运行它们并合并结果。

问题
我尝试了但仍然花了太多时间。我认为内容解析器是线程安全的。因此它仍然无法并行地服务于不同的线程请求并且花费相同的时间。实际上比以前多一点。

我认为应该有一些其他解决方案,所有这些消息应用程序,如whatsapp使用。有人有任何想法吗?

我也可以发布代码,但它是每个人都使用的常见默认代码。我已经完成了所有类型的优化,包括不做任何额外的String变量,这些变量可能会让android一次又一次地运行垃圾收集器并增加处理时间。

1 个答案:

答案 0 :(得分:0)

当用户启动您的应用时,将所有内容都放入服务中。在后台做一切。一旦你完成向用户弹出一些东西。 这就是我现在正在做的事情,我希望能帮到你。