gpt4 book ai didi

Android ContactsContract.Contacts 慢

转载 作者:行者123 更新时间:2023-11-30 04:30:33 28 4
gpt4 key购买 nike

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

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();
}
}
}

为什么这么慢?

最佳答案

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

关于Android ContactsContract.Contacts 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com