摘要: 在前文《Android多線程分析之二:Thread的實現(xiàn)》中已經(jīng)詳細分析了Android Thread 是如何創(chuàng)建,運行以及銷毀的,其重點是對相應(yīng) native 方法進行分析,今天我將聚焦于 Android Framework 層多線程相關(guān)的類:Handler, Looper, MessageQueue, Message 以及它們與Thread 之間的關(guān)系。可以用一個不太妥當(dāng)?shù)谋扔鱽硇稳菟鼈冎g的關(guān)聯(lián):如果把 Thread 比作生產(chǎn)車間,那么 Looper 就是放在這車間里的生產(chǎn)線,這條生產(chǎn)線源源不斷地從 MessageQueue 中獲取材料 Messsage,并分發(fā)處理 Message (由于Message 通常是完備的,所以 Looper 大多數(shù)情況下只是調(diào)度讓 Message 的 Handler 去處理 Message)。正是因為消息需要在 Looper 中處理,而 Looper 又需運行在 Thread 中,所以不能隨隨便便在非 UI 線程中進行 UI 操作。 UI 操作通常會通過投遞消息來實現(xiàn),只有往正確的 Looper 投遞消息才能得到處理,對于 UI 來說,這個 Loop
閱讀全文