Fixed
Status Update
Comments
ho...@gmail.com <ho...@gmail.com> #2
Yigit, do you have time to fix it?
reemission of the same liveData is racy
reemission of the same liveData is racy
ma...@gmail.com <ma...@gmail.com> #3
yea i'll take it.
ap...@google.com <ap...@google.com> #4
Thanks for the detailed analysis. This may not be an issue anymore since we've started using Main.immediate there but I' not sure; I'll try to create a test case.
jb...@google.com <jb...@google.com> #5
just emitting same live data reproduces the issue.
@Test
fun raceTest() {
val subLiveData = MutableLiveData(1)
val subject = liveData(testScope.coroutineContext) {
emitSource(subLiveData)
emitSource(subLiveData) //crashes
}
subject.addObserver().apply {
testScope.advanceUntilIdle()
}
}
@Test
fun raceTest() {
val subLiveData = MutableLiveData(1)
val subject = liveData(testScope.coroutineContext) {
emitSource(subLiveData)
emitSource(subLiveData) //crashes
}
subject.addObserver().apply {
testScope.advanceUntilIdle()
}
}
Description
Component used: Navigation Version used: 2.9.0-alpha05 Devices/Android versions reproduced on: 33
I have two nested navHostController mainNavController dashboardNavController
in dashboardNavHost when i switch between tabs with this code :
dashboardNavController.navigate(rout) { popUpTo(dashboardNavController.graph.startDestinationId) { saveState = true } launchSingleTop = true restoreState = true }
and then with mainNavController go to other composable screen, when popup back, i get the following error:
java.lang.IllegalStateException: The saved state value associated with the key 'android-support-nav:controller:backStackIds' is either null or not of the expected type. This might happen if the value was saved with a different type or if the saved state has been modified unexpectedly. at androidx.navigation.NavController.restoreState(NavController.android.kt:3697) at androidx.navigation.compose.NavHostControllerKt$NavControllerSaver$2.invoke(NavHostController.kt:80) at androidx.navigation.compose.NavHostControllerKt$NavControllerSaver$2.invoke(NavHostController.kt:78) at androidx.compose.runtime.saveable.SaverKt$Saver$1.restore(Saver.kt:65) at androidx.compose.runtime.saveable.RememberSaveableKt.rememberSaveable(RememberSaveable.kt:86) at androidx.navigation.compose.NavHostControllerKt.rememberNavController(NavHostController.kt:59)