[Android] SingleActivity 와 Navigation Component
Nov 16, 2020 03:24 · 652 words · 2 minute read
사이드프로젝트 개발에 앞서 Single Activity를 사용할 것인가에 대해 고민한다.
Single Activity?
싱글 액티비티는 하나의 액태비티를 두고 나머지 화면을 모두 프래그먼트로 구성하는 아키텍쳐로 Google I/O 2019 에서 Jetpack Navigation과 함께 소개되었다.
SignleActivity의 장점
- 하나의 Activity에 프래그먼트를 사용하여 다양한 View를 보여줄 수 있다.
- UI의 재사용이 용이하다.
- 한 액티비티 내의 데이터 전달로 같은 프로세스 안의 통신으로 성능 향상.
- 기존 액티비티의 전환시 화면 전체가 교체되는 낭비 해결 (toolbar 등의 replace)
- 공통적인 부분 개발의 편의성.
Navigation Component
싱글 액티비티 아키텍쳐 구현을 도와줄 안드로이드 jetpack’s component 이다. 기존의 프래그먼트 전환 방식과 액티비티에 종속적인 부분을 개선하기 위해 도입되었다.
Navigation component의 Key parts
- Navigation graph 하나의 xml에 앱 내의 모든 콘텐츠 영역과 사용자가 이동할 수 있는 경로가 모여있다.
- NavHost 내비게이션 그래프에서 나타내는 목적지들을 보여준다.
- NAvController 이동을 담당하여 관리한다.
Navigation component의 장점
- 프래그먼트 전환의 처리
- up and back 작업에 대한 올바른 처리
- 애니메이션과 화면 전환에 대한 표준화된 리소스 제공
- deep link 구현 및 처리
- navigation drawers , bottom navigation에 대한 ui 패턴을 최소한의 품으로 사용 할 수 있게 해줌
- Safe Args 라는 플러그인 사용, 화면간의 데이터 전달에 대해 안전성 제공
- viewmodel 서포트 (Android jetpack ViewModel)
- 안드로이드 스튜디오 3.3 이상부터 navigation edtior를 통해 gui로 확인 가능
Reference
- https://developer.android.com/guide/navigation
- https://medium.com/@kbibek/android-single-activity-design-a9e590c52ef8
- https://medium.com/swlh/android-programming-single-activity-architecture-navigation-4e4d5c5297c2
- https://medium.com/harrythegreat/android-navigation-component-개념과-튜토리얼-1-5ac6ac081643
- https://medium.com/@rlatngus6663/android-navigation-component-1-d52a21307d72
- https://medium.com/rosberryapps/a-single-activity-android-application-why-not-fa2a5458a09