我想將手機中的所有聯繫人放入數組中。我正在使用下面的代碼,但需要3-4秒才能將它們全部放入數組中。爲了加速這個過程,我只收集那些有電話號碼的聯繫人。這導致了163個元素的數組。Android ContactsContract.Contacts slow
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();
}
}
}
爲什麼這麼慢?
根據我的經驗,ContactsContract似乎在模擬器上運行得非常慢。在設備上試用您的應用程序,看看它是否運行得更快。 –
如果我沒有在手機上試過,我不會提出這個問題。 – erdomester