温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-12-18 16:39:24 来源:亿速云 阅读:125 作者:iii 栏目:移动开发

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

在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应用程序消息处理机制是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI