Android的消息機制的總體流程

Android的消息機制源碼分析(1)- ThreadLocal
Android的消息機制源碼分析(2)- 消息隊列(MessageQueue)
Android的消息機制源碼分析(3)- Looper
Android的消息機制源碼分析(4)- Handler
Android的消息機制的總體流程


Handler發送消息工作流程

Handler發送消息工作流程

主線程中的消息循環

這里有點不一樣的是,用了prepareMainLooper()給主線程創建Looper,
創建好了之后它的Handler是在ActivityThread內部

 private class H extends Handler {
        public static final int LAUNCH_ACTIVITY         = 100;
        public static final int PAUSE_ACTIVITY          = 101;
        public static final int PAUSE_ACTIVITY_FINISHING= 102;
        public static final int STOP_ACTIVITY_SHOW      = 103;
        public static final int STOP_ACTIVITY_HIDE      = 104;
        public static final int SHOW_WINDOW             = 105;
        public static final int HIDE_WINDOW             = 106;
        public static final int RESUME_ACTIVITY         = 107;
        public static final int SEND_RESULT             = 108;
        public static final int DESTROY_ACTIVITY        = 109;
        public static final int BIND_APPLICATION        = 110;
        public static final int EXIT_APPLICATION        = 111;
        public static final int NEW_INTENT              = 112;
        public static final int RECEIVER                = 113;
        public static final int CREATE_SERVICE          = 114;
        public static final int SERVICE_ARGS            = 115;
        public static final int STOP_SERVICE            = 116;
}

可以看到有好多消息的類型常量,

消息模型

ActivityThread通過Application和AMS進行線程間通信,AMS通過線程間通信的方式完成主線程的請求后回調ApplicationThread中Binder方法,然后ApplicationThread會向H發型消息,H收到消息會切換到主線程中執行


注意點:

ActivityThread不是線程,應該是封裝了UI消息循環和操作Activity生命周期的工具類

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容