HandlerThread 建立乙個非同步的後台執行緒

2021-07-16 07:38:16 字數 2257 閱讀 1419

使用handlerthread幾大優點:

1、製作乙個後台非同步執行緒,需要的時候就可以丟乙個任務給它,使用比較靈活;

2、android系統提供的,使用簡單方便,內部自己封裝了looper+handler機制;

3、可以代替thread + looper + handler的寫法;

4、可以避免專案中隨處可見的 new thread().start(),增加系統開銷;

使用handlerthread注意:

1、不要執行太耗時(一般情況不要超過100ms級別的)的任務,如果太耗時可能會阻塞其他的任務,使得其他任務遲遲得不到執行的結果

2、要自己控制好合適的生命週期,啟動和結束都要自己控制

使用handlerthread封裝乙個一定生命週期內的後台執行緒

使用場景:

有乙個相對比較大的功能,主介面是乙個activity,在這個activity內有很多的互動,不同的介面可能會載入不同是資料

原始碼封裝:

原始碼中使用handlerthread的handler的post的方式,沒有使用handler的sendmessage(message)的方式,使用post的方式比較簡單,**少,其實post內部也是呼叫了sendmessage的方式的

/**

* 需要自己控制生命週期,在這個生命週期內都可以使用這個執行緒 *

*/public

class backgroundthread extends

handlerthread

public

static

void

preparethread()

}/***如果需要在後台執行緒做一件事情,那麼直接呼叫post方法,使用非常方便

*/public

static

void

post(final

runnable runnable)

public

static

void

postdelayed(final runnable runnable, long

ndelay)

/*** 退出handlerthread

*/public

static

void

destroythread() }}

backgroundthread使用案例:1、在activity的oncreate中執行handlerthread初始化和啟動操作

backgroundthread.preparethread();
2、在activity的ondestroy中執行handlerthread的銷毀操作

backgroundthread.destroythread();
3、在backgroudthread的生命週期內,任何地方都可以呼叫post或者postdelayed方法給執行緒丟乙個任務

backgroundthread.post(new

runnable()

});

擴充套件閱讀:handlerthread之handler的sendmessage方法:

handlerthread的handler的post方法原始碼內部呼叫:

android handlerthread 完全解析

android thread looper handler 關係

HandlerThread 學習筆記

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

HandlerThread執行緒管理

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

多執行緒 handlerthread

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