본문 바로가기
IT/Android

navigateUp(), popBackStack() 차이

by YEON-DU 2021. 4. 18.
반응형

navigateUp()popBackStack()은 무슨 차이가 있을까?

 

먼저 둘의 차이를 알아보기 이전에 Navigation에 대해 간단히 살펴보자.

 

Navigation이란?

네비게이션은 사용자가 앱 내의 여러 콘텐츠를 탐색하고, 다시 나올 수 있도록 하는 상호 작용을 의미한다.

Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app.

간단히 말해 Acitivty-Fragment 간의 Transcation을 쉽게 구현하기 위한 Jetpack의 Component이다.

 

또한 네비게이션은 아래와 같은 구성 요소를 포함한다.

 

  • 프래그먼트 트랜잭션 처리.
  • 기본적으로 '위로'와 '뒤로' 작업을 올바르게 처리.
  • 애니메이션과 전환에 표준화된 리소스 제공.
  • 딥 링크 구현 및 처리.
  • 최소한의 추가 작업으로 탐색 UI 패턴(예: 탐색 창, 하단 탐색) 포함.
  • Safe Args - 대상 사이에서 데이터를 탐색하고 전달할 때 유형 안정성을 제공하는 그래프 플러그인입니다.
  • ViewModel 지원 - 탐색 그래프에 대한 ViewModel을 확인해 그래프 대상 사이에 UI 관련 데이터를 공유합니다.

 

Up vs Back

Android 내에서 Up 버튼은 상단의 주황색 버튼을 의미하고, Back 버튼은 하단의 빨간색 버튼을 의미한다.

위의 이미지에서 알 수 있듯이 Up버튼으로 앱을 종료시킬 수 없다.

또한 시작 destination에서는 Up 버튼이 노출되어서는 안 된다.

 

navigateUp(), popBackStack() 차이

따라서 두 함수의 차이는 Up 버튼을 실행시키느냐, Back 버튼을 실행시키느냐의 차이이다.

Up 버튼을 실행시켰을 때, 스택에 아무 화면도 남아있지 않으면 새롭게 Activity를 생성시키는 문제가 발생한 적이 있었다. (앱 종료가 되지 않음) 그래서 해당 문제를 Up시에 backStack이 없으면 finish()시키도록 오버라이드하는 코드를 본 적이 있으나, 특정한 상황이 아니라면 가능한 종료 조건과 관련된 함수에서는 popBackStack을 사용하도록 하자.

 

 

참고자료

two22.tistory.com/7

stuff.mit.edu/afs/sipb/project/android/docs/design/patterns/navigation.html

developer.android.com/guide/navigation

https://brunch.co.kr/@oemilk/210

반응형

'IT > Android' 카테고리의 다른 글

Image Load Library (Glide vs Picasso vs Fresco) feat. Image Caching  (0) 2021.11.03
AppbarLayout, CoordinatorLayout, Behavior  (0) 2021.04.07
Fragment에서 Back키 처리 방식  (0) 2021.04.04
21.04.03  (0) 2021.04.03
람다와 익명클래스 괴담  (0) 2021.03.14

댓글