Compose에서 안전하게 Side Effect 처리하기 (flowWithLifecycle)
·
Android/Compose
Compose에서 개발을 하다보면 ViewModel에서 발생한 이벤트를 LaunchedEffect로 수집하여 스낵바를 표시하거나 화면을 전환하는 패턴을 자주 사용합니다. 하지만 LaunchedEffect는 안드로이드 생명주기를 인식하지 못해 백그라운드 상태에서도 계속 동작하는 경우가 있어요.이번 글에서는 flowWithLifecycle API를 활용하여 생명주기에 맞는 이벤트 처리 방법과 이를 재사용 가능한 확장 함수로 구현한 경험을 정리했습니다. [REF/#180] Use collectSideEffect extension for side effect handling by angryPodo · Pull Request #181 · Hi-lingual/Hilingual-AnRelated issue 🛠 ..
[Android Compose] Effect Handlers 딥다이브
·
Android/Compose
안녕하세요! 최근 개발 실력이 나름 늘어간다고 생각이 들면서, 이전까지 모호하게 알고 있다고 생각이 들었던 것들에 대해 다시 기초부터 다지는 중인데요. 내가 컴포즈로 개발을 하면서 사이드 이펙트에 대해 고민을 하고 코드를 작성하고 있었나?라는 생각이 들어 정리를 해봤습니다. 다른 분들에게도 도움이 됐으면 좋겠네요!사이드 이펙트란?사이드 이펙트는 컴포저블 함수의 범위를 벗어나 외부 상태가 변경되는 작업을 말해요. 네트워크 요청, 데이터베이스 접근, 파일 시스템 조작 등이 대표적인 예시예요.왜 문제가 될까요?컴포저블 함수는 언제든지, 몇 번이든 호출될 수 있어요. 리컴포지션은 상태 변화, 부모 컴포저블의 변화, 시스템 설정 변경 등 다양한 이유로 발생하죠. 만약 컴포저블 함수 내에서 직접 네트워크 요청을 한..