본문 바로가기
Android/Architecture

[Android] SAA(Single Activity Architecture)란?

by 태크민 2024. 12. 17.

SAA(Single Activity Architecture)

SAA는 Google I/O 2018  에서 언급된 내용으로,

하나의 또는 적은 Activity만을 사용하고 나머지 화면을 Fragment로 구성한 구조로, Jetpack Navigation과 함께 사용되는 구조이다.

 

Jetpack Navigation에 대해 자세한 내용을 알고싶다면 아래 링크를 참고하자

https://jtm0609.tistory.com/114

 

[Android] Jetpack Navigation Component 딥 다이브

Navigation ComponentNavigation Component는 안드로이드 JetPack 라이브러리 중 하나로 사용자의 상호작용에 따라 화면간의 이동을 구현하는데 도움을 준다.이를 사용하면 개발자를 대신해 Navigation Component가

jtm0609.tistory.com

 

Single Activity를 사용하는 이유는 무엇일까?

1. Acitivty는 Fragment에 비하여 상대적으로 무겁기 때문에 메모리나 속도 방면에서 Fragment를 사용하는 것이 이득이다.

2. 비즈니스 로직을 Fragment 단위로 분리하여 의존성을 줄일 수 있다.

3. Activity보다 유연한 UI 디자인을 지원한다.

4. Acitivity Scope 내에서 ViewModel을 사용하여 데이터를 공유 및 전달할 수있다.
5. Intent, ActivityCompat, StartActivity 등 화면을 전환하는 여러 방법들을 Navigation을 사용하여 단순화 할 수 있다.

 

Fragment를 사용해야 하는 이유에 대해 자세한 내용을 알고싶다면 아래 링크를 참고하자

https://jtm0609.tistory.com/238

 

[Android] 왜 Activity 대신 Fragment를 사용해야할까?

유연한 UX/UI 구현태블릿과 같은 큰화면에서 UX/UI를 역동적이고 유연하게 구현할 수 있다.따라서 복잡한 화면 구성에 있어 Fragment를 자주 사용한다. 재사용성 증가View 또는 비즈니스 로직을 Fragmen

jtm0609.tistory.com

 

 

단점도 있을까?

하지만, Lifecycle이 Acitivty 하나만 있을 때에 비해여 더 복잡해지고 (Fragment Lifecycle도 고려해야하기 때문에), 앱의 많은 화면들이 하나의 Navigation에 담기게 되어 더 이상 가시성에 대한 이익을 볼 수 없는 단점도 존재한다.

 

이러한 장단점이 존재하기 때문에 SAA를 사용하는 것이 모든 프로젝트에서 좋은 것은 아니고, 프로젝트의 상황에 따라서 선택할 수 있는 하나의 Architecture라고 생각한다.

 


참고자료

https://velog.io/@cksgodl/androidkotlin-Single-Activity-ArchitectureSAA%EB%A5%BC-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0-%EB%B0%8F-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

 

[Android/Kotlin] Single Activity Architecture(SAA)를 쓰는 이유, 및 적용해보기

Jetpack은 개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 축소, 모든 Android 버전 및 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음입니다.안드로이드

velog.io

https://heegs.tistory.com/128

 

[Android] Single Activity Architecture (SAA) + Navigation

다양한 레퍼런스를 확인하던 와중 Single Activity Architecture (Application)에 대한 글을 보았다. 단일 혹은 아주 적은 개수의 Activity만 사용하고 모두 Fragment로 구현한 구조인데, 상당히 흥미로운 구조라

heegs.tistory.com

https://no-dev-nk.tistory.com/99

 

SAA(Single Activity Architecture) - with jetpack Navigation

이번 주제는 SAA입니다. 구글이 소개해서 꽤 유명한 것으로 알고 있지만, 생각보다 대화를 나누다보면 잘 알고 있는 사람은 드물다고 여겨지는 부분입니다.저 역시 유명한 아키텍쳐나 패턴, 코드

no-dev-nk.tistory.com

 

'Android > Architecture' 카테고리의 다른 글

[Android] 클린아키텍처 vs Google의 앱 아키텍처  (0) 2025.04.04
[Android] MVI 패턴이란?  (0) 2025.02.28
[Android] DTO vs DAO vs Entity  (0) 2024.12.14
[Android] MVVM 패턴  (0) 2023.09.19
[Android] ViewModel 이란?  (0) 2023.09.19