[Android] collectAsStateWithLifecycle과 collectAsState의 차이

Oct 02, 2024
[Android] collectAsStateWithLifecycle과 collectAsState의 차이

collectAsStatecollectAsStateWithLifecycle는 둘 다 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

code-with-me