用途:该技能帮助识别并迁移处在错误阶段的状态读取,把滚动、动画、拖拽等高频状态从 Composition 下推到 Layout 或 Draw,减少每帧子树重组。
主要能力:识别组合体中的 .value 读取;将值形式修饰符替换为 lambda 形式,如 Modifier.offset { IntOffset(...) }、Modifier.graphicsLayer { ... }、Modifier.layout { ... }、Modifier.drawBehind { ... }、Modifier.drawWithCache { ... };把动画 alpha、scale、rotate、translation 合并到单个 graphicsLayer 块;跨组合体传递 () -> Float 形式的 lambda 提供器;用 Layout Inspector 或 @TraceRecomposition 验证父组合体重组计数是否停止增长。
使用方式:先定位状态读取点及其消费修饰符,判断是值形式还是 lambda 形式;将高频状态改用 lambda 形式;跨组合体传热值改为 lambda 提供器;在 release 构建中验证。偏移量使用像素而非 dp,需注意换算。
适用场景:动画或滚动驱动 UI 每帧触发整棵子树重组;开发者报告滚动卡顿、动画掉帧;@TraceRecomposition 显示父组件每帧重组;高频值以 Float 参数跨组合体传递。
限制:状态每次用户交互仅变化一次时改写无收益;状态需要驱动 Composition(切换不同组合体)时不能用 lambda 修饰符;padding 无 lambda 重载,需用 Modifier.layout 或 offset;需确认非跳过原因不是参数不稳定;高频输入需筛选为少量布尔值时应改用 derivedStateOf。该资料未提供收费、价格或平台信息。