-
[Android] popUpTo & popUpToInclusiveAndroid📱/삽질 기록... 2023. 8. 2. 21:08
Jepack Navigation popUpTo & popUpToInclusive
Android 개발 시 Jetpack Navigation을 사용해서 화면 이동을 구현하고, 백스택을 관리해야 하는 일이 많이 있다.
뒤로 가기를 했을 때 이전 화면이 아닌 원하는 화면으로 이동해야 하거나,
특정 화면부터 원하는 화면까지의 중간에 존재하는 화면들을 전부 없애야 하는 상황들이 생기기 때문이다.
그럴 때 사용하는 옵션이 popUpTo와 popUpToInclusive이다.
popUpTo
popUpTo는 말 그대로 fragment나 composable을 popUp 시키는 것이다.
화면을 넘어갈 때 popUpTo에 지정한 화면 전까지의 화면들을 popUp 시킨다.
위와 같은 내비게이션 그래프가 존재할 때
C에서 D로 가는 action에 popUpTo="@id/B"를 추가해 준다면
C에서 D로 이동할 때 C는 사라지게 되고 D에서 뒤로 가기를 한다면 B화면으로 이동하게 되는 것이다.
popUpTo는 이처럼 개발자가 설정한 화면의 직전화면까지 popUp을 한다.
popUpToInclusive
popUpToInclusive는 기본으로 false가 설정되어 있다.
popUpToInclusive를 true로 바꾸면
popUpTo에 변화가 일어나게 된다.
popUpToInclusive를 true로 설정해 주면 개발자가 설정한 화면을 포함해서 popUp이 되게 된다.
다시 위에 그래프로 설명을 해보면
위 그림처럼 C에서 D로 가는 부분에 popUpTo와 popUpToInclusive를 설정해주면
위에 popUpTo만 했을 때와 다르게 B화면까지 popUp이 되는 것을 확인할 수 있다.
그래서 D에서 뒤로 가기를 하면 A로 이동되는 것을 확인할 수 있다.
만약 더 많은 화면에서 더 복잡하게 popUpTo를 사용한다면 백스택에 화면들을 잘 생각하면서 popUpTo와 popUpToInclusive를 적절히 활용해야 할 거 같다.
'Android📱 > 삽질 기록...' 카테고리의 다른 글