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

移动开发 Android
在queueOrSendMessage函数中,又进一步把上面传进来的参数封装成一个Message对象msg,然后通过mH.sendMessage 函数把这个消息对象msg加入到应用程序的消息队列中去。这里的mH是ActivityThread类的成员变量,它的类型为H,继承于Handler 类。

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

这里的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. ...... 

 

责任编辑:闫佳明 来源: bbs.9ria
相关推荐

2014-05-22 15:41:59

Android消息处理机制Looper

2014-05-22 15:07:44

Android消息处理机制Looper

2014-05-22 15:38:27

Android消息处理机制Looper

2014-05-22 15:04:00

Android消息处理机制Looper

2014-05-22 15:00:16

Android消息处理机制Looper

2014-05-22 15:45:58

Android消息处理机制Looper

2014-05-22 15:15:53

Android消息处理机制Looper

2014-05-22 15:33:31

Android消息处理机制Looper

2014-05-22 15:18:25

Android消息处理机制Looper

2014-05-22 14:57:28

Android消息处理机制Looper

2011-04-28 11:01:40

Android消息处理LooperHandler

2011-11-23 09:33:45

HandlerLooperMessage

2014-05-27 10:13:57

移动技术半月刊

2016-10-21 13:03:18

androidhandlerlooper

2011-09-05 17:40:40

MTK定时器

2011-03-17 09:20:05

异常处理机制

2021-08-12 16:28:10

AndroidHandleLooper

2014-05-27 15:11:20

AndroidActivitysingleTask

2023-03-08 08:54:59

SpringMVCJava

2023-06-15 14:09:00

解析器Servlet容器
点赞
收藏

51CTO技术栈公众号