handler、Looper、Message Queue(消息队列)的重要价值就是实现主线程与工做线程之间的通讯oop
实现:将工做线程中的数据经过消息传递到主线程中。线程
例子:code
点击按钮,启动线程;休眠2秒后将带有数据的消息发送出去。继承
以后当Hanlder接收到数据时,将数据显示在文本域上。队列
Message.obj 字段能够用来储存数据图片
Handler.sendMessage方法在任何线程中均可使用消息队列
class NetWorkThread extends Thread { public void run() { try { Thread.sleep(2 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } String date = "工做线程中的数据"; Message msg = handler.obtainMessage(); msg.obj = date; handler.sendMessage(msg); } }
启动线程it
class ButtonListener implements OnClickListener { public void onClick(View v) { new NetWorkThread().start(); } }
将工做线程传来的数据显示在UI上io
class MyHandler extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); String date = (String) msg.obj; textView_1.setText(date); } }
效果:class
启动程序:
点击按钮: