首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓ContactsContract.Contacts慢

安卓ContactsContract.Contacts慢
EN

Stack Overflow用户
提问于 2011-10-19 03:12:26
回答 1查看 589关注 0票数 1

我想将我手机中的所有联系人放入一个数组中。我使用的是下面的代码,但需要3-4秒才能将它们全部放入数组中。为了加快这个过程,我只收集那些有电话号码的联系人。这将产生一个包含163个元素的数组。

代码语言:javascript
复制
final String[] projection1 = new String[] {ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.Contacts.HAS_PHONE_NUMBER};
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, projection1, null, null, null);
        if (cur.getCount() > 0) 
        {
            while (cur.moveToNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    Cursor pCur = cr.query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
                while (pCur.moveToNext()) {
                    number = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    contactnumbers.add(number);

                } 
                pCur.close();
                }
            }
        }      

为什么这个速度这么慢?

EN

回答 1

Stack Overflow用户

发布于 2011-10-19 03:24:55

你在一个查询中有一个查询。为什么不创建一个连接两个语句的连接查询。这可能会比当前的解决方案快得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7812401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档