私は、対応する連絡先名のリストに変換する必要がある電話番号のリストを持っているので、連絡先リストで各番号を順番にチェックして名前を返すメソッドがあります。電話番号に関連付けられた連絡先名を取得するには、より良い方法がありますか?
リストの長さはおよそ20です。これを行うときは少し遅れています.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;
}
は、それがすべてで遅延を削減するだろう、単なるものではなくすべての名前を返す方法にしましたか?
もっと早く...? – Lion