HandlerThread handlerThread = new HandlerThread("HandlerThread");//创建一个HandlerThread对象,它是一个线程
handlerThread.start();//启动线程
MyHandler myHandler = new MyHandler(handlerThread.getLooper());//创建一个MyHandler对象,该对象继承了Handler,从下面的MyHandler类中可以看到,调用的是Handler父类的Handler(Looper looper)的构造函数,而这里传进去的Looper对象是从HandlerThread中取得的。
Message msg = myHandler.obtainMessage();//获得消息对象
msg.sendToTarget();//把得到的消息对象发送给生成该消息的Handler,即myHandler,当myHandler接收到消息后,就会调用其handleMessage的方法来处理消息
}
class MyHandler extends Handler{
public MyHandler() {//构造函数
// TODO Auto-generated constructor stub
}
public MyHandler(Looper looper){//构造函数
super(looper);//实现了父类的该构造函数
}
@Override
public void handleMessage(Message msg) {//当这个Handler接收到Message对象的时候,会自动调用这个方法,来对Message对象进行处理
// TODO Auto-generated method stub
System.out.println("Handler---->"+Thread.currentThread().getName());
}
}
}
上面的代码在LogCat中System.out的执行结果为:
Acitivity---->main
Handler---->HandlerThread
这就说明了,使用Handler,结合Looper和Message,可以实现与主线程的分离,从而可以实现多线程和异步处理。










