[안드로이드 공부]/코틀린

Kotlin by VS .value collectAsStateWithLifecycle

코코모모 2024. 5. 6. 11:05

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

by VS .value

 

val groupsUiState by viewModel.groupsUiState.collectAsStateWithLifecycle() 
val groupsUiState = viewModel.groupsUiState.collectAsStateWithLifecycle().value

 

두 코드는 Kotlin의 by 키워드를 사용하는 방식과 직접 .value를 호출하는 방식의 차이를 보여줍니다.  

 

val groupsUiState by viewModel.groupsUiState.collectAsStateWithLifecycle() 이 코드는 Kotlin의 위임 프로퍼티(delegated property)를 사용합니다. by 키워드를 사용하면 groupsUiState의 값은 viewModel.groupsUiState.collectAsStateWithLifecycle()의 현재 값으로 자동으로 설정됩니다. 이 방식은 groupsUiState를 사용할 때마다 최신 상태를 가져오므로, 상태가 변경될 때마다 자동으로 업데이트됩니다.  


val groupsUiState = viewModel.groupsUiState.collectAsStateWithLifecycle().value 이 코드는 collectAsStateWithLifecycle()의 현재 값을 직접 가져와 groupsUiState에 할당합니다. 이 방식은 groupsUiState가 선언된 시점의 상태를 저장하며, 이후 상태가 변경되더라도 groupsUiState의 값은 업데이트되지 않습니다.  

 

따라서, 상황에 따라 적절한 방식을 선택해야 합니다. 상태의 최신 값을 항상 반영해야 하는 경우에는 by 키워드를 사용하는 것이 좋습니다. 반면, 특정 시점의 상태를 고정하고 싶은 경우에는 .value를 직접 호출하는 것이 적절할 수 있습니다.

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.