Handler(上)——Mars Andoird開發視頻第二季第六集(重)

1. 經過Handler實現線程間通訊

handler、Looper、Message Queue(消息隊列)的重要價值就是實現主線程與工做線程之間的通訊oop

實現:將工做線程中的數據經過消息傳遞到主線程中。線程

例子:code

點擊按鈕,啓動線程;休眠2秒後將帶有數據的消息發送出去。繼承

以後當Hanlder接收到數據時,將數據顯示在文本域上。隊列

1.1 在Worker Thread中經過Handler發送消息

  • 線程:

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();
		}
	}

1.2 主線程中實現Handler的handleMessage()方法

  • 繼承Handler、重寫handleMessage方法,處理接收到的消息。

將工做線程傳來的數據顯示在UI上io

class MyHandler extends Handler {
		public void handleMessage(Message msg) {
			super.handleMessage(msg);
			String date = (String) msg.obj;
			textView_1.setText(date);
		}
	}

效果class

啓動程序:

輸入圖片說明

點擊按鈕:

輸入圖片說明

相關文章
相關標籤/搜索