Single Activity Architecture (SAA)
SAA(Single Activity Architecture)란 단일 혹은 아주 적은 개수의 Activity만 사용하고 모두 Fragment로 구현한 구조이다.
2018년 구글 I/O에서 언급된 개념이다
Activity는 Fragment에 비해 상대적으로 무겁기 때문에 메모리나 속도 방면에서 Fragment를 사용하는 것이 훨씬 더 이득이다.
또한 비즈니스 로직을 Fragment 단위로 분리하여 의존성을 줄인다던지, Activity보다 유연한 UI 디자인을 지원하는 등 Fragment를 사용하는 이유는 상당히 많다고 볼 수 있다.
장점
1. Activity에 비행 상대적으로 가벼움
2. 데이터 공유
3. UI의 이점
4. 관심사의 분리가 편함
단점
1. Fragment간의 동작이 비동기로 처리되기 때문에 동기/비동기에 따른 이슈가 발생할 수 있다.
이슈
1. 프래그먼트 뷰 관련 이슈
액티비티와 달리 프래그먼트의 경우 프래그먼트 자체 state와 뷰 state의 두가지 state를 관리한다.
이동을 통한 프래그먼트 전환은 추가(add) 방식이 아닌 교체(replace) 방식으로 이루어지며, 새로운 프래그먼트 스택이 쌓여 진입 시 프래그먼트가 교체되면 기존의 뷰 state는 소멸(destroy)되고 백 스택으로 재진입 시 onCreateView를 통해 새로 뷰를 구성. 이러한 특성 때문에 도입하면서 뷰를 참조하는 객체를 잘 신경써야한다.
참고
Single Activity Architecture 도입 시행착오 공유
Single Activity Architecture(이하 SAA)는 일반적인 복수 액티비티 구조가 아닌 하나의 액티비티를 구성하고 그 안에서 필요한 페이지를 프래그먼트로 구성하는 방식을 뜻합니다. 또한, Navigation Component
techblog.zepeto.me