안드로이드 학습(Compose)

LaunchedEffect란?

리저브콜드브루 2025. 3. 10. 17:54
728x90
반응형

LaunchedEffect는 Jetpack Compose에서 사용되는 Side Effect API 중 하나로, 특정 키(key) 값이 변경될 때마다 비동기 작업을 실행하는 Composable 함수

  • Composable 내에서 안전하게 코루틴 실행 가능
  • 화면이 처음 그려질 때(Composition이 시작될 때) 자동 실행
  • 키 값이 변경될 때마다 다시 실행
  • Composable이 사라지면(Composition이 해제되면) 실행 중인 코루틴도 자동 취소됨

 

기본 문법

LaunchedEffect(key1, key2, ...) {
    // 실행할 비동기 코드 (ex. 네트워크 요청, 데이터 로드, 애니메이션 시작)
}
  • key1, key2, ...: key값이 변경될 때마다 LaunchedEffect 내부 코드가 다시 실행
  • LaunchedEffect 내부에서는 코루틴이 실행되므로 suspend 함수를 직접 호출할 수 있다 

 

LaunchedEffect(Unit): 처음 한 번 실행

Unit을 Key로 사용하면 Composable이 처음 실행될 때 한 번만 실행

예제: 앱이 실행될 때 한 번만 API 호출

@Composable
fun FetchDataScreen(viewModel: MyViewModel) {
    LaunchedEffect(Unit) { 
        viewModel.fetchData()  // 앱 실행 시 한 번만 API 요청
    }
}
  • 앱이 실행되면 fetchData()가 한 번 실행됨
  • 화면이 다시 그려지거나 상태가 변경되어도 fetchData()는 다시 실행되지 않음

 

특정 값이 변경될 때마다 실행

LauchedEffect(key)를 사용하면 해당 key값이 변경될 때마다 다시 실행됨

예제: 사용자의 query가 변경될 때마다 자동 검색

@Composable
fun SearchScreen(query: String, viewModel: SearchViewModel) {
    LaunchedEffect(query) { 
        viewModel.search(query)  // 검색어(query)가 변경될 때마다 API 요청
    }
}
  • 사용자가 입려한 query 값이 바뀌면 자동으로 search(query) 실행
  • 이전 검색 요청이 아직 실행 중이라면 새로운 요청이 발생할 때 기존 요청이 취소됨

 

728x90
반응형