Framework内核解析面试题汇总(七)

153 阅读4分钟

Android并发编程高级面试题汇总最全最细面试题讲解持续更新中👊👊 👀你想要的面试题这里都有👀 👇👇👇

Handler怎么进行线程通信,原理是什么?(东方头条)

这道题想考察什么?

这道题想考察同学对Handler的多线程通信原理是否清楚。

考生应该如何回答

Handler整体思想

在多线程的应用场景中,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理,最终实现异步消息的处理。

Handler工作流程

Handler机制的工作流程主要包括4个步骤:

  1. 异步通信准备
  2. 消息发送
  3. 消息循环
  4. 消息处理

Handler工作流程图

如下图所示,handler的总体流程大致如下:

首先,系统通过调用 Looper.prepare()为线程准备Looper 和承接Message 的MessageQueue;

然后,系统再调用Looper.loop()函数,这个函数会开启一个死循环,在循环中不断的轮询MessageQueue消息队列,从消息队列中取出可以执行的Message消息,然后进行执行。

再然后,用户通过Handler.sendMessage这一类的函数调用,向MessageQueue里面不断的发送消息。

最后,由于Looper 中的loop是在不断轮询MessageQueue的,一旦发现MessageQueue里面有可执行的消息,那么就会将消息取出来,然后通过消息所携带的handler去执行。

总结

Handler 是一个消息管理机制,android 程序的运行必须依托于Handler机制,那么handler机制进行线程通信的原理思想如下: 1) 在启动handler通信机制的时候,首先会准备Looper,以及必须让Looper调用loop函数进入死循环;2)在Looper启动后,loop死循环就会不断的去轮询MessageQueue的next函数,试图通过这个方式获取到MessageQueue中存储的Message;3)当用户希望往当前创建handler的这个线程里面传递消息的时候,就可以调用这个handler的sendMessage或者postMessage 相关的函数,次数Message将被发送到对应的MessageQueue中;4)在第2)步中,loop里面的循环就会轮询到我们在第3)步中添加的消息,当这个消息被loop轮询到的时候,这个消息就会被处理掉,而且处理的线程就是当前轮询MessageQueue的线程。

总的来说,Handler机制可以理解为 在一个线程中创建了一个Message 对象(内存块),这个Message对象包含了我们要执行的动作;然后我们通过handler将这个Message内存块传给了MessageQueue,也就是说MessageQueue是存储的Message;然后Looper所在的线程通过loop()函数从MessageQueue中取到我们存储的Message,并在当前这个线程中去执行的过程。

更多的2023年Android中高级最全面试真题答案

请 Vx关注公众号:Android老皮

目录

img

第一章 Java方面

  • Java基础部分
  • Java集合
  • Java多线程
  • Java虚拟机

img

第二章 Android方面

  • Android四大组件相关
  • Android异步任务和消息机制
  • Android UI绘制相关
  • Android性能调优相关
  • Android中的IPC
  • Android系统SDK相关
  • 第三方框架分析
  • 综合技术
  • 数据结构方面
  • 设计模式
  • 计算机网络方面
  • Kotlin方面

img

第三章 音视频开发高频面试题

  • 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
  • 怎么做到直播秒开优化?
  • 直方图在图像处理里面最重要的作用是什么?
  • 数字图像滤波有哪些方法?
  • 图像可以提取的特征有哪些?
  • 衡量图像重建好坏的标准有哪些?怎样计算?

img

第四章 Flutter高频面试题

  • Dart部分
  • Flutter部分

img

第五章 算法高频面试题

  • 如何高效寻找素数
  • 如何运用二分查找算法
  • 如何高效解决雨水问题
  • 如何去除有序数组的重复元素
  • 如何高效进行模幂运算
  • 如何寻找最长回文子串

img

第六章 Andrio Framework方面

  • 系统启动流程面试题解析
  • Binder面试题解析
  • Handler面试题解析
  • AMS面试题解析

img