Android 생명주기(Lifecycle)
를 갖고 있어, onCreate
, onStart
, onStop
등을 통해 상태를 지속적으로 관리할 수 있다. 권한 요청이나 네트워크 호출 같은 부수 효과도 생명주기를 직접 참조해 처리하는 것이 자연스러워, 특정 상태에서만 유지되어야 하는 데이터를 다루기 쉽다.LaunchedEffect
, remember
, DisposableEffect
같은 컴포즈 전용 API가 제공되며, 이러한 부수 효과들은 Composable의 재구성(recomposition)에 의해 영향받는 특성을 갖는다. 즉, Composable 내 부수 효과는 UI 상태 변화와 긴밀히 연관된다.onCreate
나 onResume
에서 부수 효과를 실행하고, onPause
, onDestroy
에서 정리할 수 있어 Activity와 보다 직접적으로 상호작용할 수 있다.⇒ 따로 관리, 혼합 관리 모두 가능하다.
Fragment도 상태와 로직을 뷰모델이나 다른 클래스로 분리하여 관리할 수 있지만, 구조적으로 이를 모두 포함할 수 있는 유연성이 있다. Fragment는 생명주기와 연동된 로직을 기본적으로 가질 수 있고, 이 덕분에 권한 요청이나 네비게이션 등의 로직을 쉽게 다룰 수 있다. 반면에 Composable은 기본적으로 UI 역할에 집중하기 때문에, 권한 요청 같은 로직은 Activity에서 처리하고 UI만 전달하는 방식이 권장될 수 있다.
따라서, Fragment와 달리 Composable은 UI와 상태 변화에 더 집중된 구조이며, 비UI 로직을 직접 관리하는 것보다는 필요한 부수 효과를 UI 흐름 내에서 처리하는 것이 적합하다.