오늘도 더 나은 코드를 작성하였습니까?

안드로이드 컴포즈 네비게이션1 기초 Compose navigation Basic1 본문

Compose

안드로이드 컴포즈 네비게이션1 기초 Compose navigation Basic1

hik14 2024. 12. 1. 02:13

1. navigation의 원칙

https://developer.android.com/guide/navigation/principles?hl=ko

 

탐색 원칙  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 탐색 원칙 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 다양한 화면 및 앱 간 탐색은 사용자 환경의

developer.android.com

 

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을 식별하고, 전달되는 데이터를 식별함