handlerThread

一.介紹

HandlerThread繼承自Thread,當線程開啓時,也就是它run方法運行起來後,

線程同時創建了一個含有消息隊列的Looper,並對外提供自己這個Looper對象的get方法,這就是它和普通Thread唯一不同的地方。

二.好處

爲什麼要使用HandlerThread。

1.開發中如果多次使用類似new Thread(){...}.start()

這種方式開啓一個子線程,會創建多個匿名線程,使得程序運行起來越來越慢,

而HandlerThread自帶Looper使他可以通過消息來多次重複使用當前線程,節省開支;

2.android系統提供的Handler類內部的Looper默認綁定的是UI線程的消息隊列,

對於非UI線程又想使用消息機制,那麼HandlerThread內部的Looper是最合適的,它不會干擾或阻塞UI線程。


三.用法

HandlerThread既然本質是Thread,爲何前面加了一個Handler?

android中Handler類本質上就是從它內部的Looper中不斷取消息,

然後觸發它內部的Callback接口的handleMessage方法,讓用戶去實現對消息的具體處理。

而HandlerThread本身自帶Looper,只要它實現了Callback接口,

那麼HandlerThread也可以在自己線程內處理自己線程發出的消息,

充分實現非UI線程中較低開支下的消息處理。

四.代碼示例

MyHandlerThread  myHandler = new MyHandlerThread("lsk");
		myHandler.setPriority(Thread.MIN_PRIORITY);
		myHandler.start();
		
Handler handler = new Handler(myHandler.getLooper(), myHandler);

class MyHandlerThread extends HandlerThread implements Callback {
		public MyHandlerThread(String name) {
			super(name);
		}
		@Override
		public boolean handleMessage(Message msg) {
		}
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章