主要用于異步處理: 存在于線(xiàn)程中
開(kāi)啟子線(xiàn)程:異步處理


主要接受子線(xiàn)程發(fā)送的數(shù)據(jù),并用此數(shù)據(jù)配合主線(xiàn)程更新UI
···
//1.創(chuàng)建Handler對(duì)象
private Handler handler=new Handler(){
//2.重寫(xiě)handleMessage
public void handleMessage(android.os.Message msg) {
5.獲取消息:
String data= msg.obj;
Toast.makeText(getApplicationContext(), data, 1).show();
tv.setText("這是Hander")
}
};
在子線(xiàn)程:
String s='你好';
3.創(chuàng)建消息對(duì)象
Messge message = new Message();
message.obj=data;
message.what=10086; //消息編號(hào)
4.發(fā)送消息
mHandler.sendMessage(message);
···
---------------------handler--------------------
···
switch (msg.what) {
case 10086:
String data2=(String) msg.obj;
tv.setText(data2);
break;
case 10087:
Integer data3=(Integer) msg.obj;
tv.setText(data3+"");
break;
default:
break;
}
···
··················子線(xiàn)程···························
···
new Thread(new Runnable() {
@Override
public void run() {
try {
//
Thread.sleep(3000);
String data="你好";
//4.創(chuàng)建Message
Message message = new Message();
message.obj=data;
message.what=10086;//編號(hào)
//3.發(fā)送消息
handler.sendMessage(message);
handler.sendEmptyMessage(10086);
handler.sendMessageDelayed(message, 2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
int data=12542;//主線(xiàn)程 先顯示
Message message = new Message();
message.obj=data;
message.what=10087;
// //3.發(fā)送消息
handler.sendMessage(message);
···
*****************Handler****開(kāi)啟子線(xiàn)程***************************
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
// //2.重寫(xiě)handleMessage
// //獲取消息
switch (msg.what) {
case 10086:
String data2=(String) msg.obj;
tv.setText(data2);
break;
case 10087:
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
Integer data3=(Integer) msg.obj;
tv.setText(data3+"");
break;
default:
break;
}
};
};