Jetpack Compose 에서 액티비티를 가져오는 방법들
컴포즈에서 자신의 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 를 만들면
// 값의 변경을 추적하는 불필요한 과정을 없앰으로써 그만큼 오버헤드가 줄어들어
// 성능 최적화를 기대할 수 있습니다.