我有我需要轉換成相應的聯繫人名稱的列表,電話號碼列表,所以我有檢查又與聯繫人列表中的每個數字,返回名稱的方法。有沒有更好的方式檢索與電話號碼關聯的聯繫人姓名?
由於名單大致是20號長,這樣當有輕微的延遲,也許1 1/2秒,在理想情況下,我想切出。我想知道是否有任何事情可以優化我的代碼?
我調用該方法getContactDisplayNameByNumber()
這樣的:
ArrayList<String> tableCol1 = new ArrayList<String>();
for (int j = 0; j < tableCol1.size(); j++) {
String name = getContactDisplayNameByNumber(tableCol1.get(j));
tableCol1.set(j, name);
}
這裏是方法:
public String getContactDisplayNameByNumber(String number) {
Uri uri = Uri.withAppendedPath(
ContactsContract.PhoneLookup.CONTENT_FILTER_URI,
Uri.encode(number));
String name = "?";
ContentResolver contentResolver = getContentResolver();
Cursor contactLookup = contentResolver.query(uri, new String[] {
BaseColumns._ID, ContactsContract.PhoneLookup.DISPLAY_NAME },
null, null, null);
try {
if (contactLookup != null && contactLookup.getCount() > 0) {
contactLookup.moveToNext();
name = contactLookup.getString(contactLookup
.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
}
} finally {
if (contactLookup != null) {
contactLookup.close();
}
}
return name;
}
難道砍下延遲在所有如果我把for循環的方法中,並使它成爲一種返回所有名字而不僅僅是一種方法的方法?
更快的方法...? – Lion 2012-01-27 19:06:27