首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Flow
南北是北北
创建于2025-08-25
订阅专栏
kotlin flow
等 3 人订阅
共18篇文章
创建于2025-08-25
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
让转换并发起来的两个核心手段:flatMapMerge(concurrency = N)和channelFlow { ... }
一、 flatMapMerge(concurrency = N):把“元素→子流”并发执行并合并输出 语义 对上游每个元素 x,用变换函数生成一个 子 Flow:x -> Flow。 最多同时收集 N
详解flowOn 与背压
1)flowOn的本质:切线程 + 建边界 语义:flowOn(dispatcher) 会把它上游(到前一个 flowOn 或源头之间)的运算,放到指定 dispatcher 上执行;下游仍在收集者所
Flow的Combine使用场景以及详解
核心心智模型 combine = combineLatest:当 任意一个上游 Flow 发出新值 时,用**所有上游的“最新值”**执行一次变换并发射。 首帧条件:只有当每个上游都至少发过一次后,才
Flow中zip vs combine详解
一句话心智模型 zip = 配对:按“第 i 个对第 i 个”一一配对,短板决定产量(像拉链的齿)。 combine = 最新组合:每当任一上游有新值,就用**所有上游的“最新值”**组合发射,只要都
Flow的sample(t)详解
它到底做什么? 语义:按固定周期 t 取样上游,在每个周期边界发出“最近一次”值;周期内的其它值被跳过。 特点:最多 每隔 t 发 1 次;若某个周期里没有新值,该周期不发;上游完成时会把“最后一个尚
Kotlin中debounce(t)详解
1) 它到底做什么? 语义:当上游连续快速 emit 时,等待最近一次发射后的空闲期达到 t 才把“最后那个值”往下游发。期间若又来新值,就重置计时。 结论:只在静默(no new item)持续 ≥
详解Flow的collectLatest { ... }
它到底做了什么? 对上游每一次 emit(value),都会启动一次 收集体(你的 { ... } 块) 。 如果下一个值在前一个收集体尚未完成时到来,则取消前一个收集体,并立刻用最新值启动新的收集体
Flow中的conflate()详解
它到底干啥? 核心:当下游很慢时,**跳过中间值,只保留“最新值”**再交给下游处理。 本质实现:等价于在这里放了一个 Channel.CONFLATED 的缓冲边界(近似 buffer(capaci
Flow中的buffer详解
什么是buffer 在 上游(emit) 和 下游(collect) 之间插入一个有界/无界缓冲队列(底层是 Channel),把两端解耦:上游可以先“塞进队列就走”,下游慢慢消费。 主要用于背压处理
Flow中的背压与并发
一、Flow 的背压(Backpressure) 1)默认策略: 挂起传播(suspend) Flow 是冷流,上游 emit、下游 collect 默认是顺序串行。 当下游慢时:上游的 emit()
flow 核心 API:map/flatMapLatest/filter/debounce/sample/distinctUntilChanged...
1) 变换类 map 做什么:一进一出,同步/挂起变换。 何时用:纯计算或轻量异步。 坑:map{…}里做重活会阻塞上游 → 放 flowOn(Dispatchers.IO)。 flatMapLate
flow的终端操作、取消协作
一、终端操作(Terminal operators) 1) 收集类 collect { ... }:顺序处理每个值(会对上游施加背压)。 collectLatest { ... }:来新值就取消上一次
Flow 里的上游/下游
1) 上游 / 下游是啥 上游 (upstream) :更靠近数据来源的一段(如 flow {}、emitAll(...)、map、filter 等在链条中更左边的部分)。 下游 (downstrea
Flow的collect 和 collectLatest
一句话对比 collect { … } :顺序处理 每一个 发射值。你的 block 没执行完,上游会被背压(除非中途 buffer() 等)。 collectLatest { … } :每来新值就
Flow 的 emit 与 tryEmit :它们出现在哪些类型、背压/缓存语义、何时用谁、常见坑
1. 它们分别“属于谁” 冷流(Cold Flow)构建器:flow { … } / transform { … } 的接收者是 FlowCollector → 只能用 emit(value) / e
Flow 热流
是什么 热流指:无需收集者也能持续产出/保持数据,新的订阅者加入时可立即拿到最近值或最近 N 条。对比“冷流(collect 才启动)”,热流更像广播或可观察状态。 两大主角 1) StateFlow
Flow 冷流
冷流是什么 定义:没有订阅就不产生数据;每个收集者 collect 都会独立触发上游执行(“一次订阅,一次流程”)。 常见代表:flow { … }、sequence 的协程版、callbackFlo
一、Kotlin Flow源码结构
一、顶层接口 Flow 语义:冷流,只有一个挂起函数: 约束(非常重要): emit 串行、不可并发; 异常透明性:下游运算只捕获上游抛出的异常,不能吞掉下游自身的异常; 上下文保守:除非使用 flo