class DownloadTask extends AsyncTask<Integer, Integer, String> {
//注意:该方法是运行在UI线程当中的,此时还允许对UI当中的控件进行操作,不同于doInBackground()方法
@Override
protected void onPreExecute() {
//第一个执行方法
//do what u want
super.onPreExecute();
}
//doInBackground()作为另外一个独立的线程运行的了,并不再运行于UI线程当中了,所以不能对UI当中的控件进行设置和修改
//等等操作了,这一点是不同于onPreExecute()方法,但可以通过publishProgress()方法间接的触发调用可运行于UI线程当中
//的onProgressUpdate()来对UI线程当中的控件进行操作,publishProgress()方法自动触发onProgressUpdate()方法
//(Integer... params)为execute(100)传入的可变长参数,输入参数的个数可不定,类型为<>当中的第一个类型,
//params[0]表示第一输入参数,params[1]表示第二个,以此类推
//doInBackground()方法执行完后会自动触发onPostExecute()方法,它的返回值即为onPostExecute()方法的输入参数
@Override
protected String doInBackground(Integer... params) {
//第二个执行方法,onPreExecute()执行完后执行
//do what u want
return "一个字符";
}
//每一次调用publishProgress()方法都会自动触发调用onProgressUpdate()方法,而在doInBackground()当中,又常常是
//用到publishProgress()方法,实现与UI线程之间数据的实时交互
//onProgressUpdate()和onPreExecute()一样,都是运行在UI线程当中的,换言之,都可以对UI线程当中的控制进程操作
@Override
protected void onProgressUpdate(Integer... progress) {
//do what u want
super.onProgressUpdate(progress);
}
//onPostExecute()在doInBackground()方法执行完后自动触发调用,注意onPostExecute()是运行于UI线程当中的
//onPostExecute(String result)当中传入的参数即为doInBackground()方法的返回值
@Override
protected void onPostExecute(String result) {
//doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
//do what u want
super.onPostExecute(result);
}
}