Handler会关联一个单独的线程和消息队列。Handler默认关联主线程,虽然要提供Runnable参数
,但默认是直接调用Runnable中的run()方法。也就是默认下会在主线程执行,如果在这里面的操作会有阻塞,界面也会卡住。如果要在其他线程执行,可以使用HandlerThread。
HandlerThread的使用
//Handler handler = new Handler() {//...//}
HandlerThread uIhandlerThread = new HandlerThread("update");
uIhandlerThread.start();//Handler UIhandler = new Handler(uIhandlerThread.getLooper());
Handler uIhandler = new Handler(uIhandlerThread.getLooper(),newCallback() {public booleanhandleMessage(Message msg) {
Bundle b=msg.getData();int age = b.getInt("age");
String name= b.getString("name");
System.out.println("age is " + age + ", name is" +name);
System.out.println("Handler--->" +Thread.currentThread().getId());
System.out.println("handlerMessage");return true;
}
});
当要停止uIhandlerThread执行时用:
if(uIhandlerThread!=null) {
pointThread.quit();
}
Handler的使用
目前常使用的有两种用法,
一种是自定义Handler,在handleMessage进行事件的处理,
这个Message可以是在其他线程中send的,或者在主线程中send。
在线程中发送信息到主进程:
1.定义handler
public class MyH