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