Android获取所有联系人列表(姓名,电子邮件,电话)需要超过一分钟的约700个联系人有没有办法缩短这个时间?我正在使用光标运行并获取姓名,电话号码和电子邮件如果我从查询循环中删除电话号码查询,它将在3秒后结束任何想法如何改进该查询?也许我在查询中做错了什么?(显然我正在做异步但仍然......用户已经很长时间不能等了)希望有人可以分享他对此的看法这是我的代码ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
AddressBookEntity adr = new AddressBookEntity();
String id = cur.getString(cur .getColumnIndex(ContactsContract.Contacts._ID));
String name = cur .getString(cur .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
adr.fullName = name;
Cursor emailCur = cr .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[] { id },
null);
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
String email = emailCur .getString(emailCur .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
if (!Utils.IsNullOrEmptyString(email)) {
adr.email = email;
}
}
3 回答
![?](http://img1.sycdn.imooc.com/533e4d2600013fe202000200-100-100.jpg)
FFIVE
TA贡献1797条经验 获得超6个赞
您检索查询中的所有列:
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
这使得数据处理更慢。如果您定义了一个真正需要检索的列数组,那么速度会快得多。
- 3 回答
- 0 关注
- 1832 浏览
添加回答
举报
0/150
提交
取消