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
반응형
'안드로이드 학습(Compose)' 카테고리의 다른 글
이미지, 텍스트로 아이템 디자인 (0) | 2025.03.06 |
---|---|
검색창 레이아웃 생성 (0) | 2025.03.06 |
버튼을 아이콘으로 대체, 문자열 리소스 사용 (0) | 2025.03.05 |
앱의 스타일 지정 및 테마 설정 (0) | 2025.03.05 |
목록에 애니메이션 적용 (0) | 2025.03.05 |