Android异步消息处理之AsyncTask
1.基本用法:
AsyncTask是一个抽象类,因此我们需要有一个子类去实现它,如下:
class MyTask extends AsyncTask<Void, Integer, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
//进行耗时的任务(在子线程中执行)
return null;
}
@Override
protected void onPreExecute() {
//在开始执行任务前的准备工作(四个方法中最先调用,且运行在主线程中)
}
@Override
protected void onPostExecute(Boolean aBoolean) {
//接收来自doInBackground执行完返回值,并根据返回值做一些相应的操作(运行在主线程中)
}
@Override
protected void onProgressUpdate(Integer... values) {
//当在doInBackground中执行publishProgress(Integer in)方法时就会调用该方法,并把参数传到该方法中
//这样就可以利用publishProgress()方法在子线程和主线程之间来回切换了
}
}
有了子类之后就可以启动一个任务了:
new MyTask().execute();
AsyncTask<Void,Void,Void>
三个泛型的说明,第一个泛型是传入到doInBackground
中参数的类型,第二个泛型指定了onProgressUpdate
中参数的类型,第三个泛型指定了doInBackground
的返回值类型以及onPostExecute
方法的参数类型