public abstract class MyAsyncTask {
/**
* 在Handler之中执行线程后的操作
* */
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
onPostExecute();
}
};
/**
* 在线程之前执行的操作
* */
public abstract void onPreExecute();
/**
* 在线程之中执行的操作
* */
public abstract void doInBackground();
/**
* 在线程之后执行的操作
* */
public abstract void onPostExecute();
/**
* 执行线程操作
* */
public void execute(){
onPreExecute();
new Thread(){
@Override
public void run() {
doInBackground();
mHandler.sendEmptyMessage(0);
}
}.start();
}
}
new MyAsyncTask(){
@Override
public void onPreExecute() {
mBar.setVisibility(View.VISIBLE);
}
@Override
public void doInBackground() {
mlist = ContactUtil.getContactInfo(getApplicationContext());
}
@Override
public void onPostExecute() {
mListView.setAdapter(new MyAdapter(mlist));
mBar.setVisibility(View.GONE);
}
}.execute();
public class MyAsync extends AsyncTask<String ,Integer ,String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
}
}
- 就是自己封装的复杂实现….
- 然后就是AsyncTask分析
- 如果直接执行new MyAsyncTask().execute()方法,在android4.1以上是串行执行的 一个挨着一个执行的。
- 在2.3.3 .execute()是并行执行的。
- 如果在3.0以后的版本想并行执行,就需要用new MyAsynctask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR ) 就行了