안드로이드 컴포즈 네비게이션1 기초 Compose navigation Basic1
1. navigation의 원칙
https://developer.android.com/guide/navigation/principles?hl=ko
1) 확정된 시작 화면 (Fixed start destination)
-
- 일회성 설정 및 로그인 과정들은 시작화면으로 볼 수 없다.
2) navigation의 상태는 Stack 구조로 화면을 관리한다.
- Back Stack 을 변경하는 작업은 스택 상단으로 새 화면을 Push하거나, 최상위에 있는 대상을 스택에서 삭제하여 항상 스택 상단에서 실행됩니다.
- 기본적으로 navigation component(host, graph, controller, destination, route)는 모든 Back Stack의 순서를 관리하지만, 개발자가 직접 백 스택을 관리하도록 선택할 수도 있습니다.
3) Up Button은 앱을 종료하지 않습니다.
- Up Button은 앱을 종료하지 않지만, Back Button은 앱을 종료합니다.
- B(App) ----Deep Link를 사용하여 실행 ---> A(app) 하였다면, A에서 Up Button을 통해 A의 화면 Stack을 통해 이전 화면으로 이동할 수 있지만, A앱을 종료할 수는 없다. 하지만, BackButton으로는 가능하다.
4) 딥링크는 수동으로 탐색하는것과 같아야 한다. (Deep linking simulates manual navigation)
- 앱 화면에 딥 링크하면 앱의 기존 백 스택이 모두 삭제되고 딥 링크된 백 스택으로 대체된다.
- 즉, 내가 A라는 앱을 사용하고 있었는데 백그라운드에 넣고 다른 앱을 사용하다 A라는 앱으로 딥링크가 되었다고 해보자! 그러면 기존의 Stack은 모두 비워지고, 새로운 Stack으로 교체된다.
2. 탐색 구성요소 navigation Component
NaviHost
- 현재 탐색 하고 있는 화면을 포함하는 UI 요소
- App은 기본적으로 NaviHost 에 화면을 넣었다가 제거 하는 형태로 탐색을한다.
NaviGraph
- App 내부에 화면을 정의 하고, 연결방법을 정의하는 자료구조
NaviController
- 화면 --> 화면 즉, destination간의 이동을 관리
- 탐색, deeplink, backstack, 작업에 관련된 메소드 제공.
Destination
- NaviGraph의 노드
Route
- NaviGraph의 엣지
- Destination을 식별하고, 전달되는 데이터를 식별함