Android 消息机制

Android 消息机制

  • Android 的消息机制也是Handler机制,主要作用是用来在不同线程之间通信,通常使用在子线程执行完成一些儿耗时操作,需要回到主线程更新UI时,通过Handler将有关UI操作切换到主线程。
  • 由于Android中主线程不可进行耗时操作,所有我们的网络请求只能放在子线程中,又由于在子线程中不能更新UI,所以我们就需要使用Handler切换到主线程并更新UI。

消息机制的工作流程

  1. 应用程序启动的时候,在主线程中会默认调用 Looper.preper() 方法,初始化Lopper对象绑定到当前线程中,并在Looper内部维护一个MessageQueue
  2. 接着调用Handler.sendMessage()发送消息,会通过MessageQueue.enqueueMessage()向MessageQueue中添加一条消息
  3. 主线程调用Looper.looper()开启循环,不断轮询消息队列,通过MessageQueue.next()取出消息
  4. 取出的message不为空则调用msg.target.dispatchMessage()传递分发消息,目标handler收到消息后会执行handler.handlerMessage()方法处理消息

Handler 面试题

  1. 一个线程有几个handler?
  2. 一个线程有几个Looper?如何保证?
  3. handler内存泄露原因?为什么其他的内部类没有说过有这个为题?
  4. 为何主线程可以new Handler?如果想要在子线程中new Handler要做些什么准备?
  5. 子线程中维护的Looper,消息队列无消息的时候的处理方案是什么?有什么用?
  6. 既然可以存在多个handler往messageQueue中添加数据(发消息时各个Handler可能处于不同线程),那些内部是如何确保线程安全的?
  7. 我们使用Message是应该如何创建它?
  8. 使用Handler的postDelay后消息队列会有什么变化?
  9. Looper死循环为什么不会导致应用卡死
相关推荐
jinanwuhuaguo9 分钟前
OpenClaw 2026.4.5 深度解读
android·开发语言·人工智能·kotlin·openclaw
用户693717500138417 分钟前
实测!Gemma 4 成功跑在安卓手机上:离线 AI 助手终于来了
android·前端·人工智能
海兰18 分钟前
使用 Elastic Workflows 监控 Kibana 仪表板访问数据
android·人工智能·elasticsearch·rxjava
用户4839165508333 分钟前
AI代码分析 - LocklessQueue
android
峥嵘life43 分钟前
Android 无线投屏相关知识介绍
android·学习
常利兵1 小时前
安卓开发避坑指南:全局异常捕获与优雅处理实战
android·服务器·php
studyForMokey1 小时前
【Android面试】OkHttp & Retrofit 专题
android·okhttp·面试
恋猫de小郭1 小时前
抖音“极客”适配 Android 5 ~ 9 等老机型技术解读,都是骚操作
android·前端·flutter
黄林晴1 小时前
Android Studio Panda 4 来了!AGP 9.2 升级,同步稳定性大幅修复
android·android studio
默 语1 小时前
OpenClaw“养龙虾“热潮降温的深层解析:从技术狂欢到理性回归
android·开发语言·kotlin