2013-12-16 3 views
1

나는 코드를 사용하여 연락처를 가져 안드로이드 Xamarin.Mobile 구성 요소를 사용하고 있습니다 :Xamarin.Mobile 연락처 연락처를 가져 오는 동안 API가 많은 시간을 소비합니까?

var book = new AddressBook (Activity) {PreferContactAggregation = true}; 
var contData = data.Data; 
var cur = Activity.ManagedQuery (contData, null, null, null, null); 
Contact myContact = null; 
var lookupKeyList = new List<string>(); 
while (cur.MoveToNext()) { 
lookupKeyList.Add (cur.GetString (cur.GetColumnIndexContactsContract.Contacts.InterfaceConsts.LookupKey))); 
} 

myContact = book.Where (c => c.Id == lookupKeyList [0]).First(); 

이 코드는 전화 번호부에서 연락처를 따기와 onActivityResult를 방법에 데이터를 수신의 일부입니다. 불행히도이 코드는 일부 장치에서 너무 많은 시간을 차지하며 다른 장치에서는 즉시 발생합니다. 나는 Contact Aggregation과 관련이 있다고 생각하지만 확실하지 않습니다. 어떤 포인터?

답변

0

Android 문제와 유사하지만 반드시 Xamarin 문제는 아닙니다. 질문 Getting name and email from contact list is very slow을보십시오. 이 대답이하는 일 중 하나는 쿼리에서 투영법을 사용하여 모든 열을 한 번에 가져 오는 것입니다.

+0

여기에서 투영을 사용할 수는 있지만 업무용 전화, 집 전화, 직장 이메일, 집 이메일 등으로받은 데이터를 구분해야합니다. 위의 코드에서 LookupKey 필드를 가져 와서 연락처를 가져 오는 데 사용합니다. 위에서 언급 한 필드로 데이터를 차별화 할 수있는 객체를 쉽게 제공하는 Xamarin.Mobile Contacts API에서 가져 왔습니다. –