![[Android] collectAsStateWithLifecycle과 collectAsState의 차이](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BAndroid%255D%2520collectAsStateWithLifecycle%25EA%25B3%25BC%2520collectAsState%25EC%259D%2598%2520%25EC%25B0%25A8%25EC%259D%25B4%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Dcode-with-me&w=2048&q=75)
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