使用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的方式的
/**backgroundthread使用案例:1、在activity的oncreate中執行handlerthread初始化和啟動操作* 需要自己控制生命週期,在這個生命週期內都可以使用這個執行緒 *
*/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.preparethread();2、在activity的ondestroy中執行handlerthread的銷毀操作
backgroundthread.destroythread();3、在backgroudthread的生命週期內,任何地方都可以呼叫post或者postdelayed方法給執行緒丟乙個任務
backgroundthread.post(new擴充套件閱讀:handlerthread之handler的sendmessage方法:runnable()
});
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...