三分钟搞懂 Kotlin Flow 中的背压
Kotlin Flow 的背压处理,核心是让快生产、慢消费的节奏重新匹配。本文用同一组示例讲清默认串行收集、`buffer()`、`conflate()` 和 `collectLatest {}` 的行为差异,并给出按场景选择的判断方法。 在 Kotlin Flow 的使用中,真正难的通常不是把数据“发出来”,而是上游很快、下游很慢时该怎么处理。
Kotlin Flow 的背压处理,核心是让快生产、慢消费的节奏重新匹配。本文用同一组示例讲清默认串行收集、`buffer()`、`conflate()` 和 `collectLatest {}` 的行为差异,并给出按场景选择的判断方法。 在 Kotlin Flow 的使用中,真正难的通常不是把数据“发出来”,而是上游很快、下游很慢时该怎么处理。

这篇文章从 Kotlin 协程最常见的疑问切入:`suspend` 为什么能把异步写成同步、协程为什么不会把线程卡住、挂起后又是怎样继续执行的。通过回调写法对比、反编译后的状态机代码,以及 `label`、`Continuation`、`COROUTINE_SUSPENDED` 三个关键点,文章把协程运行机制拆开说明。

这篇文章从“协程到底是什么、为什么需要它、它轻在哪里”三个核心问题切入,再补充常见分类方式,帮助读者把 Kotlin 协程放回并发模型里理解。读完后,你能区分协程与线程的边界,也能判断 async/await、状态机和调度方式分别解决了什么问题。

这篇文章用 Jetpack Compose 官方 `HorizontalPager` 实现一个可复用轮播图组件,覆盖基础滑动、伪无限循环、自动轮播、拖拽暂停和底部指示器。文中保留完整 Kotlin 示例,并说明从 Accompanist 迁移到 `androidx.compose.foundation.pager` 后的实现重点。 在 Android 传统 View 体系里,轮播图通常要把 ViewPager 或 ViewPager2 、定时器和手势处理拼在一起,代码不算复杂,但零散且不够直观。

`Job.cancel()` 和 `Scope.cancel()` 都能取消 Kotlin 协程,但两者面向的对象、影响范围和后续可用性完全不同。本文从作用范围、示例代码、内部实现到 ViewModel 等实际场景,梳理两者该如何选、何时该整组回收、何时只停掉单个任务。

这篇文章用 Android 开发语境梳理 Kotlin Flow:先讲清冷流与热流的区别,再拆分 Flow、StateFlow、SharedFlow 的使用边界,最后补上在 Views 与 Compose 中安全收集的写法,以及常见操作符该放在哪一层。 Kotlin Flow 在 Android 里几乎已经是异步数据处理的默认选项,但真正落到项目中,很多人最容易混淆的还是三件事:普通 Flow、StateFlow、SharedFlow 各自该管什么,以及它们在 UI 层该怎么收集才不踩生。

这篇文章梳理 Kotlin 中最常见的流程控制写法:`if`、`when` 与 `for`/`while`/`do-while`。重点不是简单罗列语法,而是说明 Kotlin 和 Java 在“表达式返回值”“没有 `switch-case`”“区间遍历”上的实际差异,方便你快速判断该怎么写。 很多刚从 Java 转到 Kotlin 的开发者,第一批遇到的语法差异往往就出现在流程控制上:`if` 不只是语句,`when` 也不是简单照搬 `switch-case`,循环写法看似熟悉,但区间遍历又。

这篇文章用 Kotlin 实现一个可复用的水平滚动指示器 `BottomLineView`,核心思路是把绘制逻辑和滚动容器解耦,只暴露“指示器宽度”和“滚动比例”两个输入。文中同时给出 `RecyclerView`、`HorizontalScrollView`、`ViewPager2` 三种联动方案,适合直接落地到实际项目。

在 Kotlin 继承 Java 类时,很多人会把 `companion object` 方法当成 `static` 的“重写”入口,但这正是混编项目里最容易埋坑的地方。本文用一个 `BaseActivity.launch()` 的例子讲清两种常见误区、背后的语言机制,以及为什么“改名而不是硬顶同名静态方法”才是更稳妥的做法。

这篇文章围绕 Kotlin 入门时最容易混淆的几组基础语法展开:变量声明、类型转换、控制流程、数组,以及函数相关特性。重点不只在“怎么写”,还解释了 Kotlin 与 Java 在编译期检查、区间遍历、顶层声明和扩展函数上的差异。

这篇入门文章围绕 Kotlin 的语言定位与基础类型展开,适合刚接触 Kotlin 的读者快速建立第一层认知。文中保留了整型、字符、布尔、字符串与类型转换示例,并补充了 Kotlin 为什么适合 Android 与 Java 项目的关键背景。

这篇文章围绕 kotlinx.coroutines 的官方能力展开,重新梳理了协程框架组成、四种启动模式、常用调度器,以及取消与超时处理的关键细节。读完后可以更快判断:协程什么时候会真正执行、该放到哪个调度器,以及没有挂起点时该怎样补上取消响应。
