当前位置: 首页 > 科技观察

Android应用程序消息处理机制(Looper、Handler)解析(十一)

时间:2023-03-14 11:35:36 科技观察

在queueOrSendMessage函数中,将上面传入的参数进一步封装成一个Message对象msg,然后将消息对象msg添加到mH.sendMessage函数中到应用程序的消息队列。这里mH是ActivityThread类的成员变量,类型为H,继承自Handler类。这个H类是通过它的成员函数handleMessage函数来处理消息的,后面我们分析消息处理过程的时候会看到。定义在frameworks/base/core/java/android/app/ActivityThread.java文件中:what){...}...}...}ActivityThread类的mH成员变量是什么时候创建的?我们在分析应用程序的消息循环时,当应用程序进程启动时,会加载ActivityThread类的main函数。在这个main函数中,在通过Looper类进入消息循环之前,会在当前进程中创建一个ActivityThread实例:;thread.attach(false);...}}在创建这个实例的时候,会同时创建它的成员变量mH:[java]viewplaincopypublicfinalclassActivityThread{...finalHmH=newH();...}如前所述前面H类继承自Handler类,所以在创建这个H对象的时候,会调用Handler类的构造函数。这个函数定义在frameworks/base/core/java/android/os/Handler.java文件中:[java]viewplaincopypublicclassHandler{...publicHandler(){......mLooper=Looper.myLooper();。.....mQueue=mLooper.mQueue;...}finalMessageQueuemQueue;finalLoopermLooper;...}