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
啓動程序:
點擊按鈕: