Handler 是一个消息分发对象。handler是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,通过它可以实现在不同线程之间传递消息
本章Handler类要用到的方法有:
void handleMessage(Message msg); //需要重写的方法,用来处理接收的消息,只有当接收到发送者发来的消息,才会回调该方法
Message obtainMessage(); //获取一个消息对象
boolean sendMessage(Message msg); //发送消息对象,发送成功的话,就会回调handleMessage()方法
2.MainActivity.java如下所示:
package com.example.tcpdemo;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
MyThread mt;
//定义一个handler
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
//打印发送者发来的消息
System.out.println("main what:"+msg.what);
System.out.println("main obj:"+msg.obj.toString());
System.out.println("main arg1:"+msg.arg1);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mt = new MyThread();
mt.setHandler(mHandler); //设置handler
mt.start(); //启动线程
}
}
3.MyThread.java如下所示:
package com.example.tcpdemo;
import android.os.Handler;
import android.os.Message;
public class MyThread extends Thread {
public Handler mHandler=null;
//获取另一个线程的Handler
public void setHandler( Handler handler){
mHandler = handler;
}
public void run(){
try { //让线程睡眠3s。
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message msg = mHandler.obtainMessage();
//设置发送的内容
msg.arg1 = 1;
msg.what = 3;
msg.obj = "this is MyThread";
mHandler.sendMessage(msg);
}
}
运行打印: