您的位置:首页 > 移动开发 > Android开发

android の Handler消息传递机制

2012-05-22 20:25 411 查看
Handler类的主要作用有两个:

==》在新启动的线程中发送消息。

==》在主线程中获取、处理消息。

View Code

public class TestActivity extends Activity {

private Button btnStart,btnEnd;
private ProgressBar proBar;

protected void init(){
btnStart = (Button)findViewById(R.id.start);
btnEnd = (Button)findViewById(R.id.end);
proBar = (ProgressBar)findViewById(R.id.pBar);
}

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
proBar.setVisibility(View.VISIBLE);
//1.将一个线程加入线程队列;
updateBarHandler.post(updateBarThread);
}
});

btnEnd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
updateBarHandler.removeCallbacks(updateBarThread);
}
});
}

Handler updateBarHandler = new Handler(){
public void handleMessage(Message msg) {
//3.主线程中获取处理消息
proBar.setProgress(msg.arg1);
updateBarHandler.post(updateBarThread);
}

};

Runnable updateBarThread = new Runnable() {
int i = 0;
public void run() {
i = i + 10;
Message msg = updateBarHandler.obtainMessage();
msg.arg1 = i;
try{
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
//2.新线程中发送一个消息到消息队列
updateBarHandler.sendMessage(msg);
if(i == 100){
updateBarHandler.removeCallbacks(updateBarThread);
}
}
};
}


这里有两种队列,

一种是线程队列,就是用postXX方法或者removeCallbacks方法对线程对象的操作。

一种是消息队列,用sendMessage和handleMessage方法来对消息对象进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: