Android/Development Tips

2.4.1 이상 버전에서 Navigation Component 사용할 때 주의점

Nanamare 2022. 2. 23. 23:42
728x90

관련 문구

https://medium.com/androiddevelopers/navigation-multiple-back-stacks-6c67ba41952f

 

Navigation: Multiple back stacks

Welcome to another article in the second MAD Skills series on Navigation! In this article we’ll take a look at a highly requested feature…

medium.com

관련 레포지토리 (NavigationAdvancedSample)

https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample

 

GitHub - android/architecture-components-samples: Samples for Android Architecture Components.

Samples for Android Architecture Components. . Contribute to android/architecture-components-samples development by creating an account on GitHub.

github.com

 

 2.4.0-alpha01 이상 버전 부터 NavigationUI 의 setupWithNavController 메서드를 사용하게 되면 따로 코드 추가 없이 Mutiple back stacks 이 적용 됩니다.

 

1. 앱이 실행된 상태에서, 딥링크 등을 통해 새로운 태스크로 시작하면서, startDestination 위로 쌓여있는 Fragment 를 제거하고(setPopUpTo) 딥링크를 통해 받은 데이터를 이용하여 이동(navigate) 할 때는 백스택에 있는 것을 활용하기 위해 setPopupTo 메서드의 saveState 의 값이 true 여야 합니다 (아이디 같은 것이 있다면 복원할 때 사용)

public fun setPopUpTo(
    @IdRes destinationId: Int,
    inclusive: Boolean,
    saveState: Boolean = false // 기본 값은 false
)

2. setRestoreState 값을 true 로 주게 되면, setPopupTo 하기전의 이전 값을 복원 해서 사용하기 때문에 navigate 함수에 bundle 값을 넣어주고 사용하는 쪽에서 by navArg<XXXArgs> 로 가져와도 업데이트된 값이 아닌 이전 값이 들어있어서 주의가 필요합니다.

728x90