当我点击fab在我的应用程序中写一个新短信时,它打开的速度太慢了。当我评论readcontactData
或适配器时,它正在快速运行。问题在哪里
adapter =new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,new ArrayList<String>());
readContactData();
contactNumber.setThreshold(1);
//Set adapter to AutoCompleteTextView
contactNumber.setAdapter(adapter);
contactNumber.setOnItemClickListener(this);
private void readContactData() {
try {
ContentResolver contentResolver = getBaseContext().getContentResolver();
// Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
//Query to get contact name
Cursor cursor =contentResolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
// If data found in contacts
if (cursor.getCount() > 0) {
Log.i("AutocompleteContacts", "Reading contacts........");
int k=0;
while (cursor.moveToNext())
{
String name = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String id = cursor
.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
String hasPhone=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
//Check contact have phone number
if ((Integer.parseInt(hasPhone) > 0))
{
//Create query to get phone number by contact id
Cursor pCur = contentResolver
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + id,
null,
null);
int j=0;
while (pCur.moveToNext())
{
// Sometimes get multiple data
if(j==0)
{
// Get Phone number
String phoneNumber =pCur.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// Add contacts names to adapter
adapter.add(name);
//adapter.add(phoneNumber);
// Add ArrayList names to adapter
phoneValueArr.add(phoneNumber.toString());
nameValueArr.add(name.toString());
j++;
//k++;
}
} // End while loop
pCur.close();
} // End if
} // End while loop
//} // End Cursor value check
cursor.close();
}
catch (Exception e)
{
e.printStackTrace();
Log.d("this is an error","akdjfkandkfj");
}
}**
答案 0 :(得分:1)
您正在主线程中加载数据。所以它很慢。对readContact使用异步任务。 在onCreate中写入太多代码,减慢加载速度。