Handler h;
h =new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.arg1==2){
progressBar1.setProgress((int)progressBar1.getProgress()+1); //设置UI线程
}
}
};
接收设置
按钮启动 多线程
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Thread tt=new Thread(new Runnable() {
@Override
public void run() {
uu(); 执行的代码
}
});
tt.start(); //开始执行
}
});
protected void uuu() {
for(int l=1;l<=8;l++){
Thread.sleep(2000);
Message m2=Message.obtain();
m2.arg1=2;
h.sendMessage(m2);
}
}
----------------------------------------------------------------------------------------------
public class m extends Activity {
h h=new h();
t t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.m2);
t=new t();
t.start();
}
class h extends Handler{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.arg1==1){Log.v("2","2"); }
}
}
class t extends Thread implements Runnable {
@Override
public void run() {
super.run();
Message m =Message.obtain();
m.arg1=1;
m.obj="china";
h.sendMessage(m);
}
}
---------asyncTask----------------------------------------------------
ProgressBarAsyncTask asyncTask = new ProgressBarAsyncTask(textView, progressBar);
asyncTask.execute(1000);
public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> {
private TextView textView;
private ProgressBar progressBar;
public ProgressBarAsyncTask(TextView textView, ProgressBar progressBar) {
super();
this.textView = textView;
this.progressBar = progressBar;
}
//该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置
@Override
protected void onPreExecute() {
textView.setText("开始执行异步线程");
}
/**
* 这里的Integer参数对应AsyncTask中的第一个参数
* 这里的String返回值对应AsyncTask的第三个参数
* 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI当中的空间进行设置和修改
* 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作
*/
@Override
protected String doInBackground(Integer... params) {
int i = 0;
for (i = 10; i <= 100; i+=5) {
try {
Thread.sleep(1000);
Log.v("T", "i"+i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
publishProgress(i);
}
return i + params[0].intValue() + "";
}
/**
* 这里的Intege参数对应AsyncTask中的第二个参数
* 在doInBackground方法当中,,每次调用publishProgress方法都会触发onProgressUpdate执行
* onProgressUpdate是在UI线程中执行,所有可以对UI空间进行操作
*/
@Override
protected void onProgressUpdate(Integer... values) {
int vlaue = values[0];
progressBar.setProgress(vlaue);
}
/**
* 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)
* 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
*/
@Override
protected void onPostExecute(String result) {
textView.setText("异步操作执行结束" + result);
}
}