[Android] StateFlow VS LiveData

: ) YOUNG·2023년 5월 3일
1

안드로이드

목록 보기
11/17
post-thumbnail
  • 일반적으로 Flow는 LifeCycle을 인식할 수 없지만, LiveData는 LifeCycle을 인식할 수 있다.

  • StateFlow도 repeatOnLifecycle과 함께 StateFlow를 사용하여 Lifecycle을 인식할 수 있다.

  • Flow에서는 LiveData에는 없는 다양한 연산자를 사용할 수 있다.

  • LiveData의 경우 초기값을 강제로 지정하지 않고 init{}을 통하여 더 많은 코드를 사용할 수 있지만, StateFlow의 경우 초기 값(null을 포함)을 강제로 지정해야 합니다.



LiveData



StateFlow

ViewModel에서 사용


    private val _dataState = MutableStateFlow<String>("")
    val dataState = _dataState.asStateFlow()

    fun setDataState(newDataState: String) {
        _dataState.value = newDataState
    } // End of setDataState



Compose함수에서 사용


@Composable
private fun observeAnything() {
    lifecycleScope.launchWhenStarted {
        viewModel.stateFlow.collectLatest {

            // 구현   

        }
    }
} // End of observeAnything

0개의 댓글