Android的消息机制是如何实现机制的?

2026-04-27 22:000阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

先说点儿乱七八糟的前言

说起 Android 的消息机制, 我这脑子里立马冒出一堆快递、仓库、 挺好。 菜鸟驿站的画面——这不我把它比作快递处理中心于是开始胡思乱想。

先来点情绪:我对 Looper 那套东西又爱又恨, 爱的是它把 UI 线程撑起来恨的是每次调试都像在找失踪的包裹,有啥用呢?。

Android消息机制

别问我为什么这么情绪化,我自己都不懂。

什么是 Looper?

谨记... Looper 就像是菜鸟驿站的调度员,prepareMainLooper 那一步相当于在城市里开设了唯一的中心仓库。每个线程只能有一个 Looper, 这点跟我们生活中只能有一家快递公司一样——唯一、独占、不可替代。

源码里一句话概括: if != null) t 实不相瞒... hrow new RuntimeException;

MessageQueue——单链表的“货架”

我整个人都不好了。 MessageQueue 其实就是一条单链表,用来存放即将被处理的 Message。这里面最关键的两个方法:

  • next——负责从链表头部取出最早到期的 Message;
  • enqueueMessage——把新来的包裹插入到合适的位置。

说白了 就是一个排队买奶茶的场景,只不过这里排的是时间戳 when

Handler:快递员还是副手?

Handler 相当于快递员, 每个 Handler 必须指定 Looper,相当于每个快递员只能为指定的菜鸟中心送包裹。

创建 Handler 时可以带 Callback 参数, 这时就好比给快递员配了个副手,让副手先处理一部分事。

阅读全文

先说点儿乱七八糟的前言

说起 Android 的消息机制, 我这脑子里立马冒出一堆快递、仓库、 挺好。 菜鸟驿站的画面——这不我把它比作快递处理中心于是开始胡思乱想。

先来点情绪:我对 Looper 那套东西又爱又恨, 爱的是它把 UI 线程撑起来恨的是每次调试都像在找失踪的包裹,有啥用呢?。

Android消息机制

别问我为什么这么情绪化,我自己都不懂。

什么是 Looper?

谨记... Looper 就像是菜鸟驿站的调度员,prepareMainLooper 那一步相当于在城市里开设了唯一的中心仓库。每个线程只能有一个 Looper, 这点跟我们生活中只能有一家快递公司一样——唯一、独占、不可替代。

源码里一句话概括: if != null) t 实不相瞒... hrow new RuntimeException;

MessageQueue——单链表的“货架”

我整个人都不好了。 MessageQueue 其实就是一条单链表,用来存放即将被处理的 Message。这里面最关键的两个方法:

  • next——负责从链表头部取出最早到期的 Message;
  • enqueueMessage——把新来的包裹插入到合适的位置。

说白了 就是一个排队买奶茶的场景,只不过这里排的是时间戳 when

Handler:快递员还是副手?

Handler 相当于快递员, 每个 Handler 必须指定 Looper,相当于每个快递员只能为指定的菜鸟中心送包裹。

创建 Handler 时可以带 Callback 参数, 这时就好比给快递员配了个副手,让副手先处理一部分事。

阅读全文