반응형
안녕하세요. 오늘은 flowWithLifecycle에 대해서 말해보려고 합니다.
참고로 이 글은 저의 경험적인 고찰이라서 틀린 내용이 있을 수 있습니다.
이전 글에서
2021.12.26 - [안드로이드] - [안드로이드] repeatOnLifecycle 을 사용하며.
viewModel에서 Flow를 사용할때, repeatOnLifecycle을 사용하면 좋다고 언급했었습니다.
확실히 지금 생각해도 좋은 방법이긴 한데, 데이터의 집중하는 것이 아니라, 화면의 상태를 맞춰서 데이터를 조작하는 것이라 생각했습니다.
flowWithLifecycle 은 데이터가 화면의 상태에 따라 조작되어지는 것으로 생각됩니다.
repeatOnLifecycle (화면 상태 -> 데이터)
flowWithLifecycle (데이터 -> 화면상태)
사실 이렇게 정의는 했지만, 오히려 헷갈리시는 분께서는 다른 글도 참고하시면 좋을 것 같습니다.
그냥 제가 이해한 방법이라고 생각해주시면 좋을 것 같습니다.
코드를 한번 보겠습니다.
private fun observeStateBefore() = lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED){
viewModel.loading.collect{
binding.composeView.run {
bringToFront()
setContent {
CnubusTheme {
CircularIndeterminateProgressBar(it)
}
}
}
}
}
}
private fun observeStateAfter() = lifecycleScope.launch {
viewModel.loading
.flowWithLifecycle(lifecycle, Lifecycle.State.STARTED)
.collect {
binding.composeView.run {
bringToFront()
setContent {
CnubusTheme {
CircularIndeterminateProgressBar(it)
}
}
}
}
}
저는 위에서 아래 코드로 바꿨습니다.
생각해보면 2개다 장단점이 있는 요소들인 것 같아요~
이전 꺼는 여러 개를 동시에 제어할 수 있다는 특성, 후자는 하나의 데이터에서 선택할 수 있는 점.
3줄 요약
1. 써보니까. flowWithLifecycle 가 데이터에서 시작하니까 더 편하더라
2. 그렇다고 repeatOnLifecycle 이 나쁜 것은 아니다.
3. 여러가지 찾아보고 편한걸 사용해보자.
반응형
'안드로이드' 카테고리의 다른 글
[안드로이드] common 모듈을 공통적으로 사용하는 건 어떤가요? (0) | 2022.06.19 |
---|---|
[안드로이드] nowinandroid 를 보면서 개인적으로 기억하고 싶은 것들 (0) | 2022.05.29 |
[안드로이드] Jetpack AppStartUp 이해를 위한 정리 (2) | 2022.01.27 |
[안드로이드] 앱 오프닝 광고 구현 Version: Kotlin (0) | 2022.01.14 |
[안드로이드] repeatOnLifecycle 을 사용하며. (0) | 2021.12.26 |
댓글