Handler 负责发送消息,Looper负责接收Handler发送的消息并直接把消息回传给Handler自己。
MessageQueue就是一个存储消息的容器。
在主线程(UI线程)创建Handler来处理子线程发起的UI更新操作。
创建Handler时构造函数传入的Callback类型的参数,可以起到message过滤的功能。
用法1:
//主线程创建的Handler
private Handler handler = new Handler();
//子线通过Handler通知UI线程进行UI操作
new Thread(){
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
tv.setText("updata this text view");
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
用法2:带参数的调用
//主线程创建的Handler
private Handler messageHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
tv.setText("message is ["+msg.arg1+"]");
};
};
new Thread(){
public void run() {
// Message message = new Message();
Message message = messageHandler.obtainMessage();
message.arg1 = 8888;
messageHandler.sendMessage(message);
};
}.start();