Android RxJava Polling을 Kotlin Flow로 바꾸기: repeatOnLifecycle과 재시도
이 글은 기존 Android Retrofit2 RxJava polling: 일정 간격으로 API 호출하기 와 짝을 이루는 마이그레이션 가이드입니다. RxJava로 구현된 polling을 Kotlin Flow와 repeatOnLifecycle 로 옮기는 과정을 실행 가능한 코드로 다룹니다. Android RxJava Polling을 Kotlin Flow로 바꾸기: repeatOnLifecycle과 재시도 이미 RxJava로 polling을 구현한 프로젝트에서 Kotlin Coroutines와 Flow로 옮기면 구조화된 동시성, 자연스러운 취소 처리, 생명 주기 연동을 더 단순하게 만들 수 있습니다. 이 글에서는 RxJava 3 polling 코드를 Kotlin Flow로 단계별로 바꾸고, 화면 생명 주기와 안전하게 연결하는 방법을 다룹니다. 핵심 질문 이 글의 답 RxJava interval 은 Flow로 어떻게 바꾸나? flow + delay 또는 while().emit().delay() 루프 switchMapSingle 은 Flow로 어떻게 표현하나? 가장 최신 결과만 남기는 transformLatest / mapLatest 오류로 polling이 끊기지 않게 하려면? 요청 내부에서 예외를 상태로 변환, retryWhen 으로 지수 백오프 화면이 사라지면 자동으로 멈추려면? repeatOnLifecycle(STARTED) 에서 수집 테스트는 어떻게? runTest , TestDispatcher , 가짜 Repository 왜 Flow로 바꾸는가 RxJava는 여전히 강력한 라이브러리지만, 새 Kotlin 프로젝트에서는 다음 이유로 Coroutines/Flow가 자연스러운 선택이 됩니다. 비교 RxJava 3 Kotlin Flow 취소 전파 Disposable 수동 관리 구조화된 동시성(부모-자식) 생명 주기 연동 LiveData / Lifecycle ...