public class LooperThread extends Thread {
public void run() {
Looper.prepare();
...
Looper.loop();
}
public void run() {
Looper.prepare();
...
Looper.loop();
}
}
Looper用于管理消息队列,具有以下特点:
每个线程最多只有一个Looper,UI线程有系统创建,子线程需要手动创建;
调用loop()方法开始不停的循环消息队列;
Looper使一个线程变成Looper线程;
Handler处理发送消息到MessageQueue中,或者push新消息到MessageQueue。Handler是Android异步通信的主要方式,在Android内部有大量的使用,例如AsyncTask实际上就是对Handler的封装。
Handler在构造方法中将关联当前线程的Looper,这样就可以结合Looper加入到线程中:
public classMyThread extends Thread{
private Handler h1;
private Handler h2;
public void run(){
Looper.prepare();
//一个线程可以有多个Handler
h1 = new Handler();
h2 = new Handler();
Looper.loop();
}
}
Handler发送消息时,只有handleMessage()和Runnable的run()方法需要手动开发。