Single Activity Architecture(SAA) 전환 시 Navigation 구조 설계 방법
2025. 3. 28. 16:53ㆍAndroid/Android 기초
728x90
반응형
안드로이드 앱을 Single Activity Architecture(SAA)로 전환할 때, 가장 많이 고민하게 되는 포인트는 바로 Navigation 구조다.
기존에는 Activity 단위로 화면을 나눴다면, 이제는 하나의 Activity와 하나의 NavHost 안에서 모든 화면 전환이 이루어져야 한다.
핵심 원칙
- NavHost는 하나만!
- AppNavGraph에서 전체 라우팅 담당
- Activity마다 NavHost를 여러 개 두는 구조는 Compose + SAA에서 지양
- 하위 기능은 NavGraphBuilder 확장 함수로 분리
- ChatNavGraph, OpenChatNavGraph처럼 묶고 싶다면 NavGraphBuilder 확장 함수로 정의
- 실제 NavHost는 AppNavGraph에만 존재해야 함
실전 TIP
- ChatNavGraph 같이 독립 흐름이 필요한 경우, @Composable에서 NavHost로 다시 감싸는 구조 ❌
- 대신 아래처럼 사용:
fun NavGraphBuilder.chatNavGraph(navController: NavHostController) {
composable("chat_detail/{chatRoomId}") { ... }
composable("chat_info/{chatRoomId}") { ... }
}
- AppNavGraph에서 호출:
NavHost(...) {
...
chatNavGraph(navController)
}
이 구조만 잘 잡으면 앱의 확장성과 유지보수성이 훨씬 좋아진다.
복잡한 기능도 route 중심으로 묶고, Activity/Intent 없이 유연하게 이동 가능한 구조로 리팩토링해보자!
728x90
반응형
'Android > Android 기초' 카테고리의 다른 글
Parcelize vs Serializable 차이점 한눈에 보기 (0) | 2025.04.02 |
---|---|
[Android] 왜 Log.d() 대신 Timber를 써야 할까? (0) | 2025.03.26 |
android:exported 속성 필수 이유 (Android 12 대응) (0) | 2025.03.24 |
좀비 같은 Activity 처리하기, finish()와 finishAActivity()의 차이 (0) | 2025.03.10 |
안드로이드 모듈 간 리소스 충돌 방지: 리소스 ID와 모듈 의존성 (0) | 2025.03.05 |