在Android中,非主線程不能更新UI(ViewRootImpl在主線程中建立,是以我們要在主線程中更新UI。同理,如果ViewRootImpl在子線程中建立的話,那麼也可以在子線程中更新UI,也就是說在哪裡更新UI和ViewRootImpl在哪裡建立是關聯的。預設ViewRootImpl在主線程中建立),這時候我們可以借助Handler來實作(Activiy.runOnUiThread()也可以實作,但原理也是Handler,調用的post(Runnable));但Handler實作機制是什麼?見下圖所示

從上圖,我們可以發現幾個重要資訊:
1、Handler可以關聯多個Looper
2、一個線程隻能有一個Looper
3、ThreadLocal是線程内共享的局部變量,這裡為了共享Looper執行個體,以實作唯一性