Jetpack Compose 에서 액티비티를 가져오는 방법들

Compose에서 Actviity 를 가져오는 3가지 방법


컴포즈에서 자신의 Activity 를 가져오는 방법은 다음과 같이 3가지 방법이 존재한다.

LocalContext.current as Activity :

LocalActivity.current :

val LocalActivity = staticCompositionLocalOf<ComponentActivity> {
    noLocalProvidedFor("LocalActivity")
}

private fun noLocalProvidedFor(name: String): Nothing {
    error("CompositionLocal $name not present")
}

// 성능 최적화 팁: 액티비티 인스턴스는 자주 변경되지 않거나 아예 변경되지 않으므로 
// staticCompositionLocalOf 로 CompositionLocal 를 만들면 
// 값의 변경을 추적하는 불필요한 과정을 없앰으로써 그만큼 오버헤드가 줄어들어 
// 성능 최적화를 기대할 수 있습니다.