携帯電話のすべての連絡先を配列に入れたいと思います。私は以下のコードを使用していますが、それらをすべて配列に入れるのに3〜4秒かかります。プロセスを加速するために、私は電話番号を持っている連絡先のみを収集しています。これにより、163要素の配列が生成されます。Androidの連絡先連絡先遅い
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