当前位置: 首页 > 网络应用技术

Android处理程序消息机制

时间:2023-03-06 19:36:28 网络应用技术

  每个Android都应该熟悉处理程序,并且在线神的文章无止境。这篇文章是学习处理程序过程中一些问题的记录。

  Handler First是一个Java类,定义。但是,通常提到的是,处理程序并未具体提及自身,通常用来指代Android中的消息处理机制,或用于线程之间通信的工具。典型的应用程序是更新子线程中的UI线程。很明显,处理程序的作用用于间接通信。

  消息:需要传递的消息,通信过程不是传输过程。Messagequeue:消息队列是保存的容器。收到的消息将首先输入消息等级并等待将其取出。从MessageQueue并将其交给相应的处理程序进行处理。

  首先,您需要知道以下几点:

  在Guo Shen的博客中,将手放在处理程序工作流程图中

  我们以更新UI为示例来描述运行过程。

  这个过程非常简单,但是一些细节仍然令人困惑,我们一起研究了。

  让我们一起看看处理程序课程。

  让我们看一下这两个数量的作业,这是处理程序的初始化方法。

  从Handler的构造函数中找到并不难找到。未指定循环器时,处理程序将绑定创建其线程的looper对象。如果指定,则Mlooper分配指定的Looper对象。Mqueue始终是与Looper相对应的消息。

  以下是定义

  哈哈,当然是要称呼Handler的发送和发布相关方法。哦,这有点概述。哪种方法非常灵活,但是最终发送消息肯定会被调用。

  这里指定队列是mqueue,即相应的looper线程的消息类型。在该方法中,主要是进行团队操作。请注意,我们将稍后提及。

  创建循环器后,调用调用后,它将开始尝试从MessageQuere获取消息并将其分发给相应的处理程序,因此请查看。

  在最后一部分中,我们说是什么,我们去了seaze.java找出答案。

  哦,事实证明这是一个易于理解的处理程序类。EAVES消息在发送目标时分配了目标的值。分发时,您只需要调用目标方法。

  这是我们开始创建处理程序时重写的方法,最终在此处称为。

  答案隐藏在循环器中,这是将当前线程初始化为Looper线程的过程。

  除非调用呼叫,否则它将返回null,这将确保循环的结构方法只能调用一次以确保循环的唯一性。

  这里还有一个问题,为什么将创建的循环器存储在ThreadLocal中。然后,您必须首先讨论threadlocal。它是线程中的数据存储类。ESSENCETHE相应的区域数据更改仅与当前线程关联,并且线程不会相互干扰。这可以确保每个线程的循环器独立使用。

  以上是我个人学习处理程序过程的主要问题和经验。欢迎大家一起讨论它。最终,戴上由伟大的上帝编写的处理程序建筑图,以促进每个人都了解记忆。原始图片在这里

  原始:https://juejin.cn/post/7096107031676846116