handler主要用于线程间通信,举一个常见的场景,在一个新开的thread中请求网络,等待网络请求成功后更新界面。此时,由于更新UI的操作不能在新开的thread中完成,需要handler发送消息到主线程中来执行。
例如:new Thread(new Runnable(){
@override
public void run(){
Object result=queryWeather();
Message message = handler.obtainMessage();
message.obj = result;
handler.sendMessage(0);
}
}).start();
在主线程中定义handler,Handler handler = new Handler(){
@override
public void handleMessage(Message msg){
switch(msg.what){
case 0:
//此处为收到thread发来的消息,在此更新textView
textView.setText(msg.obj.getContent());
break;
}
}
}
大概就是这个用途,手敲的代码可能会有错误,意思应该明白