[Android] SingleActivity 와 Navigation Component

Nov 16, 2020 03:24 · 652 words · 2 minute read SignleAcitivity Navigation Android

사이드프로젝트 개발에 앞서 Single Activity를 사용할 것인가에 대해 고민한다.

Single Activity?

싱글 액티비티는 하나의 액태비티를 두고 나머지 화면을 모두 프래그먼트로 구성하는 아키텍쳐로 Google I/O 2019 에서 Jetpack Navigation과 함께 소개되었다.

SignleActivity의 장점

  1. 하나의 Activity에 프래그먼트를 사용하여 다양한 View를 보여줄 수 있다.
  2. UI의 재사용이 용이하다.
  3. 한 액티비티 내의 데이터 전달로 같은 프로세스 안의 통신으로 성능 향상.
  4. 기존 액티비티의 전환시 화면 전체가 교체되는 낭비 해결 (toolbar 등의 replace)
  5. 공통적인 부분 개발의 편의성.

싱글 액티비티 아키텍쳐 구현을 도와줄 안드로이드 jetpack’s component 이다. 기존의 프래그먼트 전환 방식과 액티비티에 종속적인 부분을 개선하기 위해 도입되었다.

  1. Navigation graph 하나의 xml에 앱 내의 모든 콘텐츠 영역과 사용자가 이동할 수 있는 경로가 모여있다.
  2. NavHost 내비게이션 그래프에서 나타내는 목적지들을 보여준다.
  3. NAvController 이동을 담당하여 관리한다.
  1. 프래그먼트 전환의 처리
  2. up and back 작업에 대한 올바른 처리
  3. 애니메이션과 화면 전환에 대한 표준화된 리소스 제공
  4. deep link 구현 및 처리
  5. navigation drawers , bottom navigation에 대한 ui 패턴을 최소한의 품으로 사용 할 수 있게 해줌
  6. Safe Args 라는 플러그인 사용, 화면간의 데이터 전달에 대해 안전성 제공
  7. viewmodel 서포트 (Android jetpack ViewModel)
  8. 안드로이드 스튜디오 3.3 이상부터 navigation edtior를 통해 gui로 확인 가능

Reference