Android应用程序消息处理机制是怎样的

这篇文章主要介绍“Android应用程序消息处理机制是怎样的”,在日常操作中,相信很多人在Android应用程序消息处理机制是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android应用程序消息处理机制是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

在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实例:

[java] view plaincopypublic final class ActivityThread { ...... public static final void main(String[] args) { ...... ActivityThread thread = new ActivityThread(); thread.attach(false); ...... } } 在创建这个实例的时候,就会同时创建其成员变量mH了: [java] view plaincopypublic final class ActivityThread { ...... final H mH = new H(); ...... }

前面说过,H类继承于Handler类,因此,当创建这个H对象时,会调用Handler类的构造函数,这个函数定义在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; ...... }

到此,关于“Android应用程序消息处理机制是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享标题:Android应用程序消息处理机制是怎样的
浏览地址:http://azwzsj.com/article/jhsphj.html