| 对比维度 | 传统 View (XML + findViewById) | Jetpack Compose (声明式) |
|---|---|---|
| 📐 编程范式 | 命令式:手动创建 View、调用 setText / addView 等 | 声明式:描述 UI 状态,自动重组更新 |
| ⚙️ 状态管理 | 需要手动同步状态(find + set),容易遗漏 | 通过 State / MutableState 自动观察,重组仅更新变化部分 |
| 🧩 代码量 | 通常较多:布局XML + Activity/Fragment + Adapter | 更少:一个 Composable 函数搞定布局与逻辑 |
| 🔄 刷新机制 | 手动 notifyDataSetChanged / invalidate | 状态变化 → 自动重组 (Recomposition),智能跳过不变部分 |
| 🧪 可测试性 | 依赖 Activity / Fragment,测试较复杂 | 纯函数式 Composable,轻松单元测试 & 语义树测试 |
// 手动创建 + 更新 TextView tv = findViewById(R.id.tv); tv.setText(“Hello”); // 更新时再次 setText tv.setText(“World”);
@Composable
fun Greeting(name: String) {
Text(“Hello $name”)
}
// 只需改变 name 状态
// UI 自动重组更新
💡 小提示: Compose 与 View 可以混合使用,但新功能推荐纯 Compose 构建, 享受声明式带来的开发效率与愉悦感。