用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);