当先锋百科网

首页 1 2 3 4 5 6 7



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