HandlerThread
handlerThread和它的名字不太一样,没有handler什么事情,它是Thread的子类,是一个内建looper的Thread。
其实HandlerThread就是如下代码:
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare(); //looper的准备
Looper.loop(); //开始loop循环
}
}); //创建带Looper的Thread对象
所以由上代码我们知道,这个东西是用来让其他线程通知这个子线程做一些事情的,当然,需要先拿到这个线程的handler才可以。
所以下面来写如何让这个线程做一些东西,用handler传递消息
HandlerThread handlerThread = new HandlerThread("test");
handlerThread.start();//开辟一个线程
Handler handler = new Handler(handlerThread.getLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
System.out.println("自线程做的事情");
}
};
//这时候,在handler调用post或send时候,就可以通知子线程了
handler.sendEmptyMessage();