在android中命中fab时,避免延迟加载活动

时间:2016-06-27 11:18:49

标签: android

当我点击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");
    }
}**

1 个答案:

答案 0 :(得分:1)

您正在主线程中加载数据。所以它很慢。对readContact使用异步任务。 在onCreate中写入太多代码,减慢加载速度。