新聞中心
在queueOrSendMessage函數(shù)中,又進一步把上面?zhèn)鬟M來的參數(shù)封裝成一個Message對象msg,然后通過mH.sendMessage 函數(shù)把這個消息對象msg加入到應(yīng)用程序的消息隊列中去。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)北流免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
這里的mH是ActivityThread類的成員變量,它的類型為H,繼承于handler 類。
這個H類就是通過其成員函數(shù)handleMessage函數(shù)來處理消息的了,后面我們分析消息的處理過程時會看到。
它定義在frameworks/base/core/java/Android/app/ActivityThread.java文件中:
- [java] view plaincopypublic final class ActivityThread {
- ......
- private final class H extends Handler {
- ......
- public void handleMessage(Message msg) {
- ......
- switch (msg.what) {
- ......
- }
- ......
- }
- ......
- }
ActivityThread類的這個mH成員變量是什么時候創(chuàng)建的呢?我們前面在分析應(yīng)用程序的消息循環(huán)時,說到當(dāng)應(yīng)用程序進程啟動之后,就會加載 ActivityThread類的main函數(shù)里面,在這個main函數(shù)里面,在通過looper類進入消息循環(huán)之前,會在當(dāng)前進程中創(chuàng)建一個 ActivityThread實例:
- [java] view plaincopypublic final class ActivityThread {
- ......
- public static final void main(String[] args) {
- ......
- ActivityThread thread = new ActivityThread();
- thread.attach(false);
- ......
- }
- }
- 在創(chuàng)建這個實例的時候,就會同時創(chuàng)建其成員變量mH了:
- [java] view plaincopypublic final class ActivityThread {
- ......
- final H mH = new H();
- ......
- }
前面說過,H類繼承于Handler類,因此,當(dāng)創(chuàng)建這個H對象時,會調(diào)用Handler類的構(gòu)造函數(shù),這個函數(shù)定義在frameworks/base/core/java/android/os/Handler.java文件中:
- [java] view plaincopypublic class Handler {
- ......
- public Handler() {
- ......
- mLooper = Looper.myLooper();
- ......
- mQueue = mLooper.mQueue;
- ......
- }
- final MessageQueue mQueue;
- final Looper mLooper;
- ......
- }
新聞標(biāo)題:Android應(yīng)用程序消息處理機制(Looper、Handler)分析(11)
文章起源:http://m.5511xx.com/article/cccghee.html


咨詢
建站咨詢
