handler簡介
handler是android中異步消息處理機制 ,handler裏有一個looper對象用來去輪詢handler的任務, 通過其構造方法可以去指定 new Handler(looper對象) looper在什麼線程裏創建的其handmessage方法就會到什麼線程去執行, 主線程不用系統會默認去創建looper , 非主線程需要去手動創建
一般是用於在子線程裏去 發送消息給主線程去更新 ui
handlerThread簡介
這個類是一般是用於 主線程去通過子線程去幹一些耗時的操作 其父類是Thread類
基本用法
將實例化後的handlerThread類的looper對象傳給 一個新的handler對象,然後這個新的handdler對象的handemessage方法就執行在子線程了
注意: getLooper方法裏返回的looper對象是在子線程裏去實例化的 所以在new Handler()構造裏傳值的時候可能會爲空,所以其getLooper方法裏做了一個同步的操作
getLooper裏作的操作
1.先判斷這個線程是否還活着
2.如果run方法還沒有被執行時 就睡眠線程在此處
run方法主要乾的一些事
1.給mLooper成員變量賦值
2.賦值成功後 喚醒線程 成功返回mLooper對象