主线程处理handler,大家都比较熟悉了,就是通过在onCreat中,new Handler
handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { System.out.println("根据拦截条件拦截handler"); return false; } }){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println("handler没有被拦截"); } };
handler的构造方法有多个,可以没有参数,默认 Handler.Callback 的 boolean handlerMessage(Message msg)返回的是false,表示不做拦截
如果构造方法中有Callback,那么如果设置拦截条件,比如msg.what =1之类的,并且返回值改为true,那么当msg=1时就会被拦截,
二、如何自己创建一个Handler
在开发过程中,常常需要自己创建一个线程来处理handler,那么一定不要自己写现成,因为有可能出现多线程并发出错,那么怎么创建呢?google早就考虑到了,所以使用google提供的 HandlerThread
HandlerThread myThread = new HandlerThread("myHandlerThread"); myThread.start(); Handler myHandler = new Handler(myThread.getLooper()){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println(Thread.currentThread()+"handler收到消息"); } }; myHandler.sendEmptyMessage(1);