App노자

[Jetpack Compose] DisposableEffect 본문

Android/Jetpack Compose

[Jetpack Compose] DisposableEffect

앱의노예 2024. 7. 27. 21:22

1. DisposableEffect란?


DisposableEffect는 Jetpack Compose에서 리소스 관리와 side effect 처리를 위해 제공되는 API이다

주로 컴포저블이 컴포지션에 추가되거나 제거될 때 수행해야 하는 작업을 정의하는 데 사용된다

컴포저블이 화면에 나타날 때 side effect를 시작하고, 화면에서 제거될 때 정리 작업을 수행되며

DisposableEffect는 블록 내에 여러 가지 작업이 있을 때 onDispose 절을 코드 블록의 마지막에 위치시켜야 한다

끝나는 지점을 명확히 인식할 수 있도록 하기 위함이며 그러지 않으면 IDE에 빌드 시간 오류가 발생할 수 있다

 

https://developer.android.com/develop/ui/compose/side-effects#disposableeffect

 

Compose의 부수 효과  |  Jetpack Compose  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Compose의 부수 효과 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 부수 효과는 구성 가능한 함수의 범

developer.android.com

 

 

2. 사용 방법


@Composable
fun testDisposableEffect() {
    DisposableEffect(Unit) {
        println("Effect started")

        onDispose {
            println("Effect disposed")
        }
    }
}

 

 

@Composable
fun MyComposable(data: String) {
    DisposableEffect(data) {
        // data값이 변경될 때마다 이 블록이 실행됩니다.
        println("DisposableEffect: $data")

        onDispose {
            // 기존의 효과를 정리하는 블록
            println("Dispose: $data")
        }
    }

    Text(text = data)
}

 

@Composable
fun MyScreen() {
    Box(
        modifier = Modifier
            .size(100.dp)
            .myComposableEffect()
            .background(Color.Red)
    )
}


fun Modifier.myComposableEffect() = composed {
    DisposableEffect(Unit) {
        println("Effect started")

        onDispose {
            println("Effect disposed")
        }
    }
}

 

 

 

 

 

 

'Android > Jetpack Compose' 카테고리의 다른 글

[Jetpack Compose] AnimatedVisibility  (0) 2024.08.19
[Jetpack Compose] ConstraintLayout  (0) 2024.08.03
[Jetpack Compose] Modifier  (0) 2024.01.07
[Jetpack Compose] Slot API  (0) 2024.01.06
[Jetpack Compose] CompositionLocal  (0) 2024.01.05