标签:源码解析清除筛选

Handler 运行流程源码解析(七):Handler 中的 Message 创建

本文内容整理自技术讲解视频《Handler 中的 Message 如何创建?》。 创建 Handler 消息时,new Message 可以工作,但通常应使用 Message.obtain 或 handler.obtainMessage 。它们会优先复用已经回收的 Message,池为空时才分配新对象。 一、先把创建方式用对 如果消息要发送给一个已知 Handler,可以直接从它取得消息

Handler 运行流程源码解析:从 sendMessage 到 handleMessage 的完整链路

本文内容整理自技术讲解视频《handler 运行的整个流程源码解析》。 主线程里有一个 for (;;) 死循环,从应用启动一直转到进程结束,应用却不卡。死循环与不卡顿为什么能同时成立? 原因可以总结为:send 系列方法把消息交给 Handler.enqueueMessage,消息带着一个执行时刻 when 被插进 MessageQueue 的单向链表(按 when 升序,所以它是优先级队列而不

Okio框架解析:Buffer与Segment的读写设计

一、Okio 简介 Okio 把Buffer从 BufferedOutputStream ByteArray,换成了「8 KiB 定长块组成的双向环形链表 + 全局无锁块池」,于是缓冲区可以按块移动而不是按字节拷贝,落盘粒度天然对齐到块边界,块用完之后回池复用。 1.1 与 Java IO 的设计对比 java.io 中的 InputStream / OutputStream,数据的载体是 byt