一. 消息驅動
Android系統的java程序靠消息驅動來工作,其工作原理包括兩個部分:
- 消息隊列,可以往消息隊列裏面投遞消息
- 消息循環,從消息隊列中取出消息,處理消息
二. Looper/Handler作用
Looper類用於封裝消息隊列和消息循環;
Handler類用於封裝消息投遞、處理的一些接口。
三. Looper工作原理
Looper的工作主要依靠兩個函數,prepare()和loop()。兩個函數都是static。
Looper是實現牽扯到ThreadLocal的工作原理,參考 正確理解ThreadLocal。
prepare()函數 構造一個Looper對象,並且保存到線程的局部變量中。
Looper對象中封裝了一個消息隊列。
loop()函數是一個循環,用來獲取消息隊列,並從消息隊列中獲取消息來處理。
public class Handler {
...
final MessageQueue mQueue;
final Looper mLooper;
final Callback mCallback;
IMessenger mMessenger;
}
四. Handler工作原理
五. 小結