Fixed
Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
il...@google.com <il...@google.com> #2
Yigit, do you have time to fix it?
reemission of the same liveData is racy
reemission of the same liveData is racy
ta...@gmail.com <ta...@gmail.com> #3
yea i'll take it.
il...@google.com <il...@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.
ta...@gmail.com <ta...@gmail.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
Version used: 1.0.0-alpha02
Devices/Android versions reproduced on: all
There's always an inherent race condition with any OnClickListener where the callback can come in after the state saved. Navigation shouldn't crash in these cases.
Fatal Exception: java.lang.IllegalStateException
Can not perform this action after onSaveInstanceState
android.support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:2080)
android.support.v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:2106)
android.support.v4.app.BackStackRecord.commitInternal (BackStackRecord.java:683)
android.support.v4.app.BackStackRecord.commit (BackStackRecord.java:637)
androidx.navigation.fragment.FragmentNavigator.navigate (FragmentNavigator.java:158)
androidx.navigation.fragment.FragmentNavigator.navigate (FragmentNavigator.java:45)
androidx.navigation.NavDestination.navigate (NavDestination.java:345)
androidx.navigation.NavController.navigate (NavController.java:645)
androidx.navigation.ui.NavigationUI.onNavDestinationSelected (NavigationUI.java:84)
androidx.navigation.ui.NavigationUI.access$000 (NavigationUI.java:46)
androidx.navigation.ui.NavigationUI$3.onNavigationItemSelected (NavigationUI.java:216)
android.support.design.widget.BottomNavigationView$1.onMenuItemSelected (BottomNavigationView.java:201)