java.lang.Thread是线程类 ,本例使用thread对象同时对两个进度条进行更新,
要实现在线程中更新GUI组件需要使用Handler 类
先看一看 消息机制原理图
在这里调用Handler的 post方法执行run方法来更新进度条
注意: 使用Handler 类既可以使用 sendMessage 方法发送消息来调用handleMessage 方法处理任务,也可以直接使用post、postAtTime或postDelayed 方法来处理任务
主要代码:
public class Main extends Activity {
private ProgressBar progressBar1;
private ProgressBar progressBar2;
private Handler handler = new Handler();
private int count1 = 0;
private int count2 = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
progressBar1 = (ProgressBar) findViewById(R.id.progressbar1);
progressBar2 = (ProgressBar) findViewById(R.id.progressbar2);
Thread thread1 = new Thread(doUpdateProgressBar1, "thread1");
thread1.start();
Thread thread2 = new Thread(doUpdateProgressBar2, "thread2");
thread2.start();
}
private Runnable doUpdateProgressBar1 = new Runnable() {
@Override
public void run() {
for (count1 = 0; count1 <= progressBar1.getMax(); count1 += 2) {
handler.post(new Runnable() {
@Override
public void run() {
progressBar1.setProgress(count1);
}
});
if(count1 == progressBar1.getMax()) {
count1 = 0;
continue;
}
}
}
};
private Runnable doUpdateProgressBar2 = new Runnable() {
@Override
public void run() {
for (count2 = 0; count2 <= progressBar2.getMax(); count2 += 5) {
handler.post(new Runnable() {
@Override
public void run() {
progressBar2.setProgress(count2);
}
});
}
}
};
}
示意图
具体代码请参见 ch08_thread 工程