Android应用程序消息处理机制(Looper、Handler)分析(11)

在queueOrSendMessage函数中,又进一步把上面传进来的参数封装成一个Message对象msg,然后通过mH.sendMessage 函数把这个消息对象msg加入到应用程序的消息队列中去。

专注于为中小企业提供做网站、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业北流免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

这里的mH是ActivityThread类的成员变量,它的类型为H,继承于handler 类。

这个H类就是通过其成员函数handleMessage函数来处理消息的了,后面我们分析消息的处理过程时会看到。

它定义在frameworks/base/core/java/Android/app/ActivityThread.java文件中:

 
 
  1. [java] view plaincopypublic final class ActivityThread { 
  2. ...... 
  3. private final class H extends Handler { 
  4. ...... 
  5. public void handleMessage(Message msg) { 
  6. ...... 
  7. switch (msg.what) { 
  8. ...... 
  9. ...... 
  10. ...... 
  11. }

ActivityThread类的这个mH成员变量是什么时候创建的呢?我们前面在分析应用程序的消息循环时,说到当应用程序进程启动之后,就会加载 ActivityThread类的main函数里面,在这个main函数里面,在通过looper类进入消息循环之前,会在当前进程中创建一个 ActivityThread实例:

 
 
  1. [java] view plaincopypublic final class ActivityThread { 
  2. ...... 
  3. public static final void main(String[] args) { 
  4. ...... 
  5. ActivityThread thread = new ActivityThread(); 
  6. thread.attach(false); 
  7. ...... 
  8. 在创建这个实例的时候,就会同时创建其成员变量mH了: 
  9. [java] view plaincopypublic final class ActivityThread { 
  10. ...... 
  11. final H mH = new H(); 
  12. ...... 

前面说过,H类继承于Handler类,因此,当创建这个H对象时,会调用Handler类的构造函数,这个函数定义在frameworks/base/core/java/android/os/Handler.java文件中:

 
 
  1. [java] view plaincopypublic class Handler { 
  2. ...... 
  3. public Handler() { 
  4. ...... 
  5. mLooper = Looper.myLooper(); 
  6. ...... 
  7. mQueue = mLooper.mQueue; 
  8. ...... 
  9. final MessageQueue mQueue; 
  10. final Looper mLooper; 
  11. ...... 

网页题目:Android应用程序消息处理机制(Looper、Handler)分析(11)
网站URL:http://www.csdahua.cn/qtweb/news2/159052.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网