Coroutine SharedFlow
·
KOTLIN
👩‍💻 오늘의 할 일서버로에서 가져온 데이터를 기반으로 경도와 위도를 사용해서 지도에 마커를 표시해주고 있습니다. 문제는 처음 지도를 보여주는 Fragment가 생성되면 정상적으로  마커가 표시 되지만 BottomNavigation으로 다른 Fragment로 전환 후 다시 지도로 돌아오면 마커가 표시되지 않는 문제가 발생했습니다.서버의 데이터는 ViewModel에서 StateFlow로 받아왔습니다. 그래서 저는 문제의 원인을 StateFlow로 특정했습니다. StateFlow를 원인으로 삼은 이유는 StateFlows는 중복된 값을 방출 하지 않는다는 점 때문입니다. 자세한 글은 앞선 포스팅을 참고해주세요!  지난 1월 15일 작성했던 글을 처음으로 StateFlow를 사용했고 SharedFlow를 ..
StateFlow가 중복된 값을 반환하지 않는 이유(DistinctUntilChanged)
·
KOTLIN
👩‍💻 오늘의 할 일그동안 저는 SateFlow가 같은 값을 방출하지 않도록 설계되어 같은 값이 필요할 경우 SharedFlow를 사용해야 한다고 알고 있었습니다. 오늘은 StateFlow가 왜 같은 값을 방출하지 않는지 낱낱이 파헤쳐 봅시다! distinctUntilChanged  StateFlow는 distinctUntilChanged와 같은 연산을 합니다. 먼저 distinctUntilChanged에 대해 알아보겠습니다. 먼저 함수명 그대로 해석을 해보겠습니다. distinct는 학교에서 DataBase를 배울 때 중복을 제거하고 데이터를 가져올 때 사용했던 기억이 나네요. 그럼 이어 해석을 해보면 distinct Until Changed 즉, 변경될 때까지 중복을 제거한다라고 해석할 수 있겠네..
[PROJECT]프로젝트 리팩토링
·
PROJECT
🚨 ISSUE 프로젝트를 진행하면서 서버에 저장된 매장 정보를 사용자에게 보여주는 과정에서 UI를 바로 렌더링 하지 못하는 issue가 발생했습니 다. SplashScreen이나 Loading 화면을 만들어 해결할 수 도 있겠지만 그러면 저 이거 못해요~~라고 인정하는 거 같아서 🐌 이를 개선하기 위해 기존 코드의 문제점을 분석해 보았습니다. 📌Activity class MyStoreActivity : AppCompatActivity(){ private lateinit var binding: ActivityMyStoreBinding private val viewModel: MyPageViewModel by viewModels() override fun onCreate(savedInstanceState: ..
[Kotlin] LiveData 대신 StateFlow 사용하기
·
KOTLIN
👩‍💻 오늘의 할 일 앞선 글에서 소개했듯이 프로젝트에 있던 LiveData들을 StateFlow로 대체하기 위해 공부하고 있습니다. 안드로이드에서는 어떤 이유로 Live Data를 StateFlow로 대체하라고 하는걸까요 ? StateFlow에 대해 알아보겠습니다. [Kotlin] Coroutine Flow 기존 진행하던 프로젝트를 리팩토링 하는 과정에서 two-way Binding을 사용하던 도중 Live Data의 타입을 변경할 수 있는 Transformation.map Operator가 import가 안되는 issue가 발생했습니다. Transformations.map AAC( chanho-study.tistory.com 📕 LiveData LiveData 개요 | Android 개발자 | And..