微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Android中AsyncTask的处理后台耗时操作

Android中AsyncTask的处理后台耗时操作

时间:10-08 来源:互联网 点击:

ty extends Activity {

Button download;

ProgressBar pb;

TextView tv;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

pb=(ProgressBar)findViewById(R.id.pb);

tv=(TextView)findViewById(R.id.tv);

download = (Button)findViewById(R.id.download);

download.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

DownloadTask dTask = new DownloadTask();

dTask.execute(100);

}

});

}

class DownloadTask extends AsyncTask

//后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型

@Override

protected void onPreExecute() {

//第一个执行方法

super.onPreExecute();

}

@Override

protected String doInBackground(Integer... params) {

//第二个执行方法,onPreExecute()执行完后执行

for(int i=0;i=100;i++){

pb.setProgress(i);

publishProgress(i);

try {

Thread.sleep(params[0]);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

return 执行完毕;

}

@Override

protected void onProgressUpdate(Integer... progress) {

//这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数

//但是这里取到的是一个数组,所以要用progesss[0]来取值

//第n个参数就用progress[n]来取值

tv.setText(progress[0]+%);

super.onProgressUpdate(progress);

}

@Override

protected void onPostExecute(String result) {

//doInBackground返回时触发,换句话说,就是doInBackground执行完后触发

//这里的result就是上面doInBackground执行后的返回值,所以这里是执行完毕

setTitle(result);

super.onPostExecute(result);

}

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top