Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android點滴之HandlerThread的用法

android點滴之HandlerThread的用法

編輯:關於Android編程

轉載請注明出處:http://blog.csdn.net/lskshz/article/details/25364909

一.介紹

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) {
		}
	}




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved