collectAsState
와 collectAsStateWithLifecycle
는 둘 다 Jetpack Compose의 @Composable
함수에서 StateFlow
를 수집하는 데 사용되지만, 라이프사이클 인식 측면에서 차이가 있다.
collectAsState
- 기본 사용법: StateFlow
를 수집하여 State
객체로 변환한다.
- 라이프사이클 인식: 기본적으로 라이프사이클을 인식하지 않습니다. @Composable
이 활성 라이프사이클 상태에 있지 않더라도 계속 수집을 진행하므로 불필요한 리소스 사용이 발생할 수 있습니다.
collectAsStateWithLifecycle
- 향상된 사용법: StateFlow
를 수집하여 State
객체로 변환하지만, 라이프사이클 인식 기능이 추가되었다.
- 라이프사이클 인식: 라이프사이클을 인식하여 @Composable
이 활성 라이프사이클 상태(예: 시작 또는 재개)일 때만 StateFlow
를 수집합니다. 이를 통해 리소스 사용을 최적화하고 메모리 누수를 방지할 수 있다.
// collectAsState 사용
val introduce by viewModel.introduce.collectAsState()
// collectAsStateWithLifecycle 사용
val introduce by viewModel.introduce.collectAsStateWithLifecycle()
요약하자면, collectAsStateWithLifecycle
는 @Composable
의 라이프사이클에 맞춰 StateFlow
수집을 관리하여 더 효율적이고 안전한 리소스 관리를 가능하게 한다.
Share article