首次组合(Initial Composition): 当 Composable 函数第一次被调用并添加到 UI 树时,会进行首次组合。在这个阶段,Compose 会执行 Composable 函数并创建 UI 组件。
remember
、LaunchedEffect(Unit)
等操作将会执行一次。此时,任何状态、效果或副作用都是初始化的。重组与首次组合的区别: 首次组合是指 Composable 函数的第一次执行,而重组是指由于状态变化导致的再次执行。
State
或 MutableState
)时,它会被重新组合。这个过程是更新 UI 的过程。LaunchedEffect(key)
的协程才会重新启动。remember
: 用于在重组之间存储状态,保持状态的值在重组时不变。rememberSaveable
: 除了在重组之间保持状态外,还可以在配置更改(如屏幕旋转)时保存状态。LaunchedEffect
: 在 Composable 函数首次组合时执行指定的代码。它可以通过传递 key 来控制副作用的重新执行。
LaunchedEffect(key) {
// 这个代码块在首次组合时执行,并且当 key 变化时重新执行
}
SideEffect
在每次重组后都会执行
DisposableEffect
: 在 Composable 被移除时执行清理操作,例如取消注册监听器或停止协程。
LocalContext
提供了当前的 Context
,而 LocalLifecycleOwner
提供了当前的生命周期拥有者。onCreate
, onResume
, onPause
)会影响 Composable 的组合和重组行为。