什麼時候使用Looper.prepare()

鏈接:http://blog.csdn.net/lwuit/article/details/6796464

當你的線程想擁有自己的MessageQueue的時候先Looper.prepare(),然後Looper.loop();
參照源碼:
[java] view plaincopy
  1. public static final void prepare() {  
  2.        if (sThreadLocal.get() != null) {  
  3.            throw new RuntimeException("Only one Looper may be created per thread");  
  4.        }  
  5.        sThreadLocal.set(new Looper());  
  6.    }  
這段代碼就是通過ThreadLocal來產生一個Looper對象做爲線程局部變量,然後調用Looper.loop()則是取出Looper對象中的MessageQueue進行消息循環了,這樣形成了這個線程的消息隊列。
一般情況下只會有主線程會調用prepare方法(ActivityThread的main函數)。
 
使線程擁有自己的消息列隊,主線程擁有自己的消息列隊,一般線程創建時沒有自己的消息列隊,消息處理時就在主線程中完成,如果線程中使用Looper.prepare()和Looper.loop()創建了消息隊列就可以讓消息處理在該線程中完成
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章