HandlerThread 學習筆記

2021-06-27 00:06:11 字數 1012 閱讀 9871

1.handler

handler會關聯乙個單獨的執行緒和訊息佇列。handler預設關聯主線程,雖然要提供runnable引數 ,但預設是直接呼叫runnable中的run()方法。也就是預設下會在主線程執行,如果在這裡面的操作會有阻塞,介面也會卡住。如果要在其他執行緒執行,可以使用handlerthread

注:handler只能在帶有looper的執行緒中建立,一般的執行緒是不帶looper的,想要讓執行緒具有looper,需呼叫looper.prepare()建立,所以handler不能在子執行緒中建立。

2.handlerthread

handlerthread繼承於thread,所以它本質就是個thread。與普通thread的差別就在於,它有個looper成員變數。這個looper其實就是對訊息佇列以及佇列處理邏輯的封裝,簡單說就是 訊息佇列+訊息迴圈。

當我們需要乙個工作者執行緒,而不是把它當作一次性消耗品,用過即廢棄的話,就可以使用它

public class workthreadhandler 

public boolean isrelease()

return false;

} public void release()

} mworkthread = null;

mworkhandler = null;

} public void posttask(runnable task)

} public void posttaskdelayed(runnable task, long delay)

} public void posttaskattime(runnable task, long when)

} public void posttaskatfront(runnable task)

} public void removetask(runnable task)

}}

HandlerThread執行緒管理

使用過程 1。新建乙個handlerthread物件 myhandlerthread mhandlerthread new myhandlerthread testtraffichandlerthread 2。使用post方法將runnable物件加入這個執行緒的佇列 mhandlerthread....

多執行緒 handlerthread

當我們需要工作執行緒來操作的時候,很多時候會有同步問題,ui更新問題。handle機制就是為了解決這個問題而產生的。android允許每個執行緒都有自己的訊息佇列,同時也可以是主線程訊息佇列。但是很多時候,我們希望可以快速的建立乙個支援自己訊息佇列的android執行緒,這個時候handlerthr...

你擔心handlerThread的效率問題嗎?

handlerthread handler looper messagequeue相互關聯對應 queue是通過msg.next指向下乙個msg來實現,mmessages代表當前的message,每取出乙個msg,移動一次mmessages,一直到最後乙個msg handlerthread是乙個執行...