Fixed
Status Update
Comments
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 97e0c84504c598ab2932fba7f8597b5ca4b40904
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Nov 10 14:25:45 2021
Ensure parent child links are properly restored
When the NavController is destroyed and them recreated, we never
recreate the parent-child links to indicate whether child destinations
are transitioning. This means that NavGraphs can be destroyed
prematurely even though they have child destinations that are still
undergoing transitions.
Added the proper linking to ensure that when restored we maintain the
parent child relationships.
RelNote: "NavController will no longer crash when popping a nested
destination using transitions after the NavController has been
restored."
Test: NavBackStackEntryTest
Bug: 205021623
Change-Id: I0f7c990620f9e16cb96e2076ce0104916a47e0f0
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
https://android-review.googlesource.com/1887638
Branch: androidx-main
commit 97e0c84504c598ab2932fba7f8597b5ca4b40904
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Nov 10 14:25:45 2021
Ensure parent child links are properly restored
When the NavController is destroyed and them recreated, we never
recreate the parent-child links to indicate whether child destinations
are transitioning. This means that NavGraphs can be destroyed
prematurely even though they have child destinations that are still
undergoing transitions.
Added the proper linking to ensure that when restored we maintain the
parent child relationships.
RelNote: "NavController will no longer crash when popping a nested
destination using transitions after the NavController has been
restored."
Test: NavBackStackEntryTest
Bug: 205021623
Change-Id: I0f7c990620f9e16cb96e2076ce0104916a47e0f0
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
jb...@google.com <jb...@google.com> #3
This has been fixed internally and will be available in the next Navigation release. To try out the fixes, you can follow the #7906517
.
Description
Component used: Navigation
Version used: androidx.navigation:navigation-compose:2.4.0-beta02
Devices/Android versions reproduced on: Google Pixel 3 with Android 12, ARM64 emulator with Android 12
Please get the attached project (Compose Blueprint). It contains two screens: Main and Subscreen. Subscreen is nested under Subgraph navigation block. So the navigation goes: Main -> Subgraph -> SubScreen. Subscreen is requesting Subgraph's ViewModel emulating the situation when this ViewModel needs to be shared between some screen within a nested flow.
Install the app and follow the next steps:
The same crash never happen when the activity is not recreated, e.g. when "Don't keep activities" is disabled. Also, just going back and forth between screens without moving the app into the background works correctly.
So it seems there something going wrong when the navigation backstack is restored.