Android的Message Queue
16lz
2021-01-23
1. Message Queue的角色
l 在你的Android程式裡,新誕生一個線程,或稱執行緒(Thread)時,並不會自動建立其Message Loop。
l Android裡並沒有Global的Message Queue資料結構,例如,不同APK裡的物件不能透過Massage Queue來交換訊息(Message)。
l 一個線程可以誕生一個Looper之物件,由它來管理此線程裡的Message Queue。
l 你可以誕生Handler之物件來與Looper溝通,以便push新訊息到Message Queue裡;或者接收Looper(從Message Queue取出)所送來的訊息。
l 線程A的Handler物件參考可以傳遞給別的線程,讓別的線程B或C等能送訊息來給線程A(存於A的Message Queue裡)。
l 線程A的Message Queue裡的訊息,只有線程A所屬的物件可以處理之。
l 使用Looper.myLooper可以取得目前線程的Looper物件參考值。
l 使用mHandler = new EevntHandler(Looper.myLooper()); 可誕生用來處理目前線程的Handler物件;其中,EevntHandler是Handler的子類別。
l 使用mHandler = new EevntHandler(Looper.getMainLooper()); 可誕生用來處理main線程的Handler物件;其中,EevntHandler是Handler的子類別。
l 在你的Android程式裡,新誕生一個線程,或稱執行緒(Thread)時,並不會自動建立其Message Loop。
l Android裡並沒有Global的Message Queue資料結構,例如,不同APK裡的物件不能透過Massage Queue來交換訊息(Message)。
l 一個線程可以誕生一個Looper之物件,由它來管理此線程裡的Message Queue。
l 你可以誕生Handler之物件來與Looper溝通,以便push新訊息到Message Queue裡;或者接收Looper(從Message Queue取出)所送來的訊息。
l 線程A的Handler物件參考可以傳遞給別的線程,讓別的線程B或C等能送訊息來給線程A(存於A的Message Queue裡)。
l 線程A的Message Queue裡的訊息,只有線程A所屬的物件可以處理之。
l 使用Looper.myLooper可以取得目前線程的Looper物件參考值。
l 使用mHandler = new EevntHandler(Looper.myLooper()); 可誕生用來處理目前線程的Handler物件;其中,EevntHandler是Handler的子類別。
l 使用mHandler = new EevntHandler(Looper.getMainLooper()); 可誕生用來處理main線程的Handler物件;其中,EevntHandler是Handler的子類別。
更多相关文章
- Android程式编写及调试新手入门-1
- 开发人员抱怨:Android应用程式钱难赚
- Android 程式开发:(一)详解Activity —— 1.1生命周期
- Android 程式开发:(一)详解活动 —— 1.1 Activity的生命周期(创作初
- Anatomy of an Android Application - 剖析Android應用程式的四
- Android 程式开发:(一)详解Activity —— 1.1生命周期(前言)
- [转]Jollen 的Android 教學,#1: Android 應用程式模式
- Android 程式开发(原创)の目录索引
- 快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识