<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Android的专栏]]></title><description><![CDATA[聚焦Kotlin高阶特性与当前主流Android开发架构，包含协程底层源码拆解、Flow全场景使用、MVVM架构落地、Jetpack组件深度适配等内容。]]></description><link>https://blog.csdn.net/hai324314</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; hai324314]]></copyright><item><title><![CDATA[Kotlin / Android 常用函数使用示例手册]]></title><link>https://blog.csdn.net/hai324314/article/details/166134260</link><guid>https://blog.csdn.net/hai324314/article/details/166134260</guid><author>hai324314</author><pubDate>Sun, 20 Sep 2026 15:40:06 +0800</pubDate><description><![CDATA[Kotlin / Android 常用函数使用示例手册]]></description><category></category></item><item><title><![CDATA[Android 组件化开发实践]]></title><link>https://blog.csdn.net/hai324314/article/details/165890462</link><guid>https://blog.csdn.net/hai324314/article/details/165890462</guid><author>hai324314</author><pubDate>Fri, 18 Sep 2026 21:35:33 +0800</pubDate><description><![CDATA[核心思路一句话：业务模块互不依赖、可独立运行，壳工程负责集成打包。]]></description><category></category></item><item><title><![CDATA[Kotlin Flow combine 源码剖析：一个 Channel 如何优雅合并多条流]]></title><link>https://blog.csdn.net/hai324314/article/details/165484525</link><guid>https://blog.csdn.net/hai324314/article/details/165484525</guid><author>hai324314</author><pubDate>Tue, 15 Sep 2026 16:50:16 +0800</pubDate><description><![CDATA[zip 是严格按顺序一一配对（第 1 个配第 1 个，第 2 个配第 2 个），任一上游慢下来整体就等着；combine 是各自取最新值，谁快谁多都能跟上。要「配对」用 zip，要「组合状态」用 combine]]></description><category></category></item><item><title><![CDATA[hiprint 打印预览正常，导出 Excel 报错]]></title><link>https://blog.csdn.net/hai324314/article/details/165358399</link><guid>https://blog.csdn.net/hai324314/article/details/165358399</guid><author>hai324314</author><pubDate>Mon, 14 Sep 2026 20:54:23 +0800</pubDate><description><![CDATA[hiprint 打印预览正常，导出 Excel 报错]]></description><category></category></item><item><title><![CDATA[FusibleFlow：Kotlin Flow 的融合机制原理]]></title><link>https://blog.csdn.net/hai324314/article/details/165239232</link><guid>https://blog.csdn.net/hai324314/article/details/165239232</guid><author>hai324314</author><pubDate>Sun, 13 Sep 2026 16:23:59 +0800</pubDate><description><![CDATA[本文以 `FusibleFlow` 为核心，通过源码片段解析 Flow 的"融合"（fuse）优化：`flowOn` 如何触发融合、`fuse` 如何把多层上下文合并为一次线程切换，以及无法融合时 `ChannelFlow` 兜底方案（`collectTo`）的工作方式。]]></description><category></category></item><item><title><![CDATA[Android JNI 示例：Java 与 C++ 互调演示]]></title><link>https://blog.csdn.net/hai324314/article/details/165008495</link><guid>https://blog.csdn.net/hai324314/article/details/165008495</guid><author>hai324314</author><pubDate>Fri, 11 Sep 2026 23:11:08 +0800</pubDate><description><![CDATA[这个 Demo 演示了 Android JNI 开发中最常用的几类交互场景]]></description><category></category></item><item><title><![CDATA[Android WorkManager 笔记]]></title><link>https://blog.csdn.net/hai324314/article/details/164881902</link><guid>https://blog.csdn.net/hai324314/article/details/164881902</guid><author>hai324314</author><pubDate>Thu, 10 Sep 2026 21:10:15 +0800</pubDate><description><![CDATA[本文档整理了 Android Jetpack `WorkManager` 的几种典型使用方式：同步阻塞任务、协程挂起任务、`Function` 函数式接口，以及任务状态映射的实现思路。]]></description><category></category></item><item><title><![CDATA[async 函数结果获取机制分析]]></title><link>https://blog.csdn.net/hai324314/article/details/164760753</link><guid>https://blog.csdn.net/hai324314/article/details/164760753</guid><author>hai324314</author><pubDate>Thu, 10 Sep 2026 02:20:24 +0800</pubDate><description><![CDATA[async 的返回值最终存放在 JobSupport 的 state 字段中，await() 只是去读这个字段——读到了就直接返回（快路径）；读不到就挂起自己，等协程完成回调把自己唤醒后再读一次（慢路径）。结果传递的本质是「共享状态 + 完成回调」，不是消息推送。]]></description><category></category></item><item><title><![CDATA[Kotlin 协程作用域源码剖析]]></title><link>https://blog.csdn.net/hai324314/article/details/164742845</link><guid>https://blog.csdn.net/hai324314/article/details/164742845</guid><author>hai324314</author><pubDate>Wed, 09 Sep 2026 14:42:23 +0800</pubDate><description><![CDATA[GlobalScope、MainScope、lifecycleScope、viewModelScope 四者的实现原理与正确使用姿势]]></description><category></category></item><item><title><![CDATA[Kotlin 协程上下文：从 plus 到 CombinedContext，彻底搞懂左偏结构]]></title><link>https://blog.csdn.net/hai324314/article/details/164632232</link><guid>https://blog.csdn.net/hai324314/article/details/164632232</guid><author>hai324314</author><pubDate>Wed, 09 Sep 2026 00:04:36 +0800</pubDate><description><![CDATA[协程上下文（CoroutineContext）是 Kotlin 协程中用于承载调度器、异常处理器、命名参数等元素的不可变容器。它的内部实现采用左偏结构：合并时右侧（新加入）元素优先，相同 Key 的元素由右侧覆盖左侧。]]></description><category></category></item><item><title><![CDATA[Kotlin 协程：一文搞懂 CoroutineExceptionHandler 与 ContinuationInterceptor 的区别]]></title><link>https://blog.csdn.net/hai324314/article/details/164427174</link><guid>https://blog.csdn.net/hai324314/article/details/164427174</guid><author>hai324314</author><pubDate>Tue, 08 Sep 2026 00:04:37 +0800</pubDate><description><![CDATA[执行时序：拦截器贯穿全程，异常处理器最后出场。]]></description><category></category></item><item><title><![CDATA[Messenger：Android 最轻量的 IPC 方式]]></title><link>https://blog.csdn.net/hai324314/article/details/164432066</link><guid>https://blog.csdn.net/hai324314/article/details/164432066</guid><author>hai324314</author><pubDate>Tue, 08 Sep 2026 00:02:32 +0800</pubDate><description><![CDATA[Messenger 就是 Handler 的"跨进程版"，一端发消息、一端 Handler 处理，双向通信靠 replyTo 贴地址]]></description><category></category></item><item><title><![CDATA[不用 AIDL，手把手教你手写 Binder 代理类]]></title><link>https://blog.csdn.net/hai324314/article/details/164429107</link><guid>https://blog.csdn.net/hai324314/article/details/164429107</guid><author>hai324314</author><pubDate>Mon, 07 Sep 2026 00:02:40 +0800</pubDate><description><![CDATA[在日常 Android 开发中，我们习惯了用 AIDL 来定义跨进程接口。但 AIDL 本质上只是一个代码生成工具，它自动生成的 Stub 和 Proxy 类完全可以手写。理解手写 Binder 的过程，能帮助你深入掌握 Android IPC 机制的核心原理]]></description><category></category></item><item><title><![CDATA[AIDL 实现 IPC 进程间通信]]></title><link>https://blog.csdn.net/hai324314/article/details/164426690</link><guid>https://blog.csdn.net/hai324314/article/details/164426690</guid><author>hai324314</author><pubDate>Mon, 07 Sep 2026 00:01:48 +0800</pubDate><description><![CDATA[死亡监听：利用 IBinder.DeathRecipient 监听服务端进程死亡，及时重连或降级。]]></description><category></category></item><item><title><![CDATA[Kotlin 协程上下文（CoroutineContext）深度解析]]></title><link>https://blog.csdn.net/hai324314/article/details/164426671</link><guid>https://blog.csdn.net/hai324314/article/details/164426671</guid><author>hai324314</author><pubDate>Sun, 06 Sep 2026 12:44:00 +0800</pubDate><description><![CDATA[普通 Job 遇到子协程异常会向上传播取消，而 SupervisorJob 对非 CancellationException 异常返回 false，实现异常隔离。]]></description><category></category></item><item><title><![CDATA[SendChannel 与 ReceiveChannel 通信机制]]></title><link>https://blog.csdn.net/hai324314/article/details/164405604</link><guid>https://blog.csdn.net/hai324314/article/details/164405604</guid><author>hai324314</author><pubDate>Sun, 06 Sep 2026 00:55:28 +0800</pubDate><description><![CDATA[Channel 的设计灵感来源于 Java 中的 BlockingQueue，但其专为非阻塞挂起协程而设计。]]></description><category></category></item></channel></rss>