Есть ли более быстрый способ считывания контактов в Android? Например, мой метод с курсором занимает 3-5 секунд для чтения 30-50 контактов. Это очень долго.Быстрые контакты для чтения android
Cursor cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (hasPhone.equalsIgnoreCase("1"))
hasPhone = "true";
else
hasPhone = "false" ;
if (Boolean.parseBoolean(hasPhone))
{
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
names.add(cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)));
numbers.add(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
phones.close();
}
}
Любые идеи?
Я согласен с этим ответом. Кроме того, вы должны использовать [CursorLoader] (http://developer.android.com/reference/android/content/CursorLoader.html), поскольку он будет выполнять работу с потоком пользовательского интерфейса (если вы этого еще не делаете). – hwrdprkns
да, вы можете это сделать ... :) – Kri