Skip to main content

DisposableEffect 與 LifecycleEventObserver

在 Jetpack Compose 中,通常會使用 DisposableEffect 來與 LifecycleEventObserver 互動,以便在 Composable 中安全地監聽 Android 的生命週期。

@Composable
fun HomeScreen(lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current) {
    DisposableEffect(lifecycleOwner) {
        val observer = LifecycleEventObserver { source, event ->
            if (event == Lifecycle.Event.ON_RESUME) {
                Log.d("ComposeLifecycle", "Screen is resumed!")
            }
        }

        // 添加觀察者
        lifecycleOwner.lifecycle.addObserver(observer)

        // onDispose 區塊會在 Composable 離開畫面時執行
        onDispose {
            // 移除觀察者,避免記憶體洩漏
            lifecycleOwner.lifecycle.removeObserver(observer)
        }
    }
    // ... 你的 UI
}