⚡ 理解 @Composable、Composable 函数 与 重组 (Recomposition) 是掌握 Jetpack Compose 的基石。下面我们用最直观的方式拆解这三个核心概念。
@Composable 注解告诉 Compose 编译器:这个函数是用来描述 UI 的。它会把函数转换为可以在重组中高效执行的代码。
你只需描述 UI 应该是什么样子,而不需要手动更新视图。Compose 会根据状态自动完成刷新。
编译器会为 Composable 函数生成额外的参数 (例如 Composer),实现高效的增量更新。
@Composable fun Greeting(name: String) { Text( text = "你好,$name!", color = Color(0xFF1F4A7A) ) }
remember / LaunchedEffect。| 特性 | 传统 View 系统 | Compose 声明式 |
|---|---|---|
| UI 构建 | XML 布局 + findViewById | @Composable 函数 + Kotlin DSL |
| 更新方式 | 手动操作 View (setText, setVisibility…) | 状态驱动 → 自动重组 |
| 性能关键 | 避免过度绘制 | 跳过稳定且未改变的部分 (智能重组) |
| 可测试性 | 依赖 instrumentation | 直接调用 Composable 函数 + 语义树 |
重组 是指当 Composable 函数读取的状态 (State) 发生变化时,Compose 会重新执行那些受影响的函数,以更新 UI 树。 它只更新需要变化的部分,而不是整个界面。
count 状态变化时,只有读取它的 Composable 会重组。
@Composable fun CounterApp() { var count by remember { mutableStateOf(0) } Column( modifier = Modifier.padding(24.dp) ) { Text(text = "点击次数: $count") // ⬅️ 读取 count,重组时更新 Button(onClick = { count++ }) { Text("➕ 增加") } } }
📌 核心回顾