5 Anti-Patterns With Coroutines & Flows You MUST Avoid!
- 뷰 모델에서 UI 상태 업데이트 시 기본 디스패처 사용은 메인 스레드 차단을 유발할 수 있으므로
Dispatchers.Default
를 사용하여 백그라운드 스레드에서 실행해야 함. 🛠️
ViewModelScope
에서 실행되는 코루틴은 뷰 모델이 소멸될 때 취소되므로, 데이터 저장 후 화면 이동 시 데이터 동기화가 완료되지 않을 수 있음. 애플리케이션 범위의 코루틴 스코프를 사용하거나 UI에 완료 이벤트를 알리는 방식으로 해결 가능. ⏳
supervisorScope
내에서 launch
로 코루틴을 시작하고 즉시 join
을 호출하는 것은 병렬 처리를 막고 순차적 실행을 유도하는 안티 패턴임. 모든 코루틴을 시작한 후 join
을 호출해야 함. 🚀
while (true)
루프 내에서 네트워크 요청을 반복하는 코루틴은 취소 가능해야 하지만, 예외 처리 시 루프가 중단되지 않아 메모리 누수 및 앱 불안정을 초래할 수 있음. ♻️