728x90
관련 문구
https://medium.com/androiddevelopers/navigation-multiple-back-stacks-6c67ba41952f
관련 레포지토리 (NavigationAdvancedSample)
https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample
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
'Android > Development Tips' 카테고리의 다른 글
간단 Tips. KotlinxSerialization 를 사용하여 Date 를 파싱하는데 에러가 난다면? (0) | 2022.11.29 |
---|---|
Domain 모듈에서 Paging, Room(RemoteMediator) 라이브러리 의존성 해결하기 (0) | 2022.09.30 |
DataStore Protocol Buffer 사용시 Tips (0) | 2022.02.06 |
알고 계시나요 Fragment 가 복원되는 시점? (1) | 2021.12.12 |
BroadcastReceiver 사용할 때 유의점 (0) | 2021.12.12 |