天天看點

ContactsContract讀取聯系人的異步方法

用AsyncTask異步的方法讀取聯系人清單方法:

1)在主線程的Activity下加入代碼 new MyAsyncTask(this,allcontacts_cursor).execute(lv);MyAsyncTask繼承自AsyncTask類,lv是ListView的對象,是傳入的參數;this是目前ListActivity的Context對象;allcontacts_cursor是在目前主線程中得到的所有聯系人的Cursor對象;

2)MyAsyncTask類定義如下:public class MyAsyncTask extends AsyncTask<ListView, Void, BaseAdapter>

ListView 是傳入的參數,BaseAdapter是AsyncTask類中方法BaseAdapter doInBackground(ListView... params)的傳回的結果,doInBackground方法的傳入參數既是new MyAsyncTask(this,allcontacts_cursor).execute(lv)方法中的lv;

在方法doInBackground中主要是執行個體化一個adapter,并将其傳回。其傳回值作為方法onPostExecute(BaseAdapter result);的參數傳入;

在方法onPostExecute(BaseAdapter result)中将輸入參數指派給MyAsyncTask對象的輸入參數;

3)LayoutInflater的調用;

a)LayoutInflater inflater = Activity.getLayoutInflater()

b)LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);