[Android Compose] 생명주기를 고려한 Flow 수집으로 Side Effect 유실 막기
·
Android/Compose
안녕하세요! Compose로 개발하다 보면 Side Effect를 어떻게 처리할지 항상 고민인데요. 저도 ViewModel에서 발생한 이벤트를 LaunchedEffect로 받아서 스낵바를 보여주거나 화면을 전환하는 코드를 자주 작성했어요. 그런데 문득 앱이 백그라운드로 전환됐을 때 flow 수집이 중단되나? 생각이 들어서 테스트 해보니 LaunchedEffect가 계속 동작하는걸 발견했어요.이번 글에서는 제가 겪었던 문제와 flowWithLifecycle API로 해결한 경험, 그리고 이 과정에서 만든 재사용 가능한 확장 함수까지 공유해보려합니다! (해당 작업 PR 입니다)어떤 문제가 있었나요?보통 ViewModel의 단방향 이벤트(Side Effect)를 처리할 때 LaunchedEffect를 많이 사..
[Android Compose] Effect Handlers 딥다이브
·
Android/Compose
안녕하세요! 최근 개발 실력이 나름 늘어간다고 생각이 들면서, 이전까지 모호하게 알고 있다고 생각이 들었던 것들에 대해 다시 기초부터 다지는 중인데요. 내가 컴포즈로 개발을 하면서 사이드 이펙트에 대해 고민을 하고 코드를 작성하고 있었나?라는 생각이 들어 정리를 해봤습니다. 다른 분들에게도 도움이 됐으면 좋겠네요!사이드 이펙트란?사이드 이펙트는 컴포저블 함수의 범위를 벗어나 외부 상태가 변경되는 작업을 말해요. 네트워크 요청, 데이터베이스 접근, 파일 시스템 조작 등이 대표적인 예시예요.왜 문제가 될까요?컴포저블 함수는 언제든지, 몇 번이든 호출될 수 있어요. 리컴포지션은 상태 변화, 부모 컴포저블의 변화, 시스템 설정 변경 등 다양한 이유로 발생하죠. 만약 컴포저블 함수 내에서 직접 네트워크 요청을 한..