Status Update
Comments
jn...@google.com <jn...@google.com> #2
Branch: androidx-main
commit 6ebe664e0db444d2602f67a75a4deada37d0a72f
Author: stevebower <stevebower@google.com>
Date: Wed Oct 13 15:26:27 2021
Update transition handling in SwipeDismissableNavHost.
Transitions should reach Lifecycle.State.RESUMED
when animations are complete.
Test: androidx.wear.compose.navigation.
Bug: 202863359
Relnote: "Update transition handling in
SwipeDismissableNavHost"
Change-Id: I1cbe09cd902f785dcb68f11f098b340e4da1e55a
M wear/compose/compose-navigation/build.gradle
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/WearNavigator.kt
jn...@google.com <jn...@google.com> #3
Branch: androidx-main
commit d65ce67f974132fad4f26a3f72de6a3b3be2ec0d
Author: stevebower <stevebower@google.com>
Date: Fri Oct 15 09:48:16 2021
Wrap transition handling in SideEffect.
State outside this composable should be
updated in one of the Effect APIs
(as per late comments in aosp/1857639).
Test: androidx.wear.compose.navigation.
Bug: 202863359
Relnote: "Update transition handling in
SwipeDismissableNavHost in a SideEffect"
Change-Id: I04994074e7d024dcf857c156c8c265b57e3769f8
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
jn...@google.com <jn...@google.com>
jn...@google.com <jn...@google.com>
ap...@google.com <ap...@google.com> #4
Heads up - I ended up using repeatOnLifecycle(state = Lifecycle.State.STARTED)
in some code because repeatOnLifecycle(state = Lifecycle.State.RESUMED)
wasn't firing, and Alex mentioned this one.
Will provide a repro offline.
jn...@google.com <jn...@google.com> #5
Shared the repro offline. Steve, do you want me to open a diff bug?
[Deleted User] <[Deleted User]> #6
[Deleted User] <[Deleted User]> #7
When swiping to dismiss, we trigger an animation and call popWithTransition so that the lifecycle does reached Resumed until the animation has completed (when onTransitionComplete gets called) - see WearNavigator::popBackStack.
The problem is that, if we call navController.popBackStack directly, that is also calling WearNavigator.popBackStack, which in turn calls popWithTransition - but there's no corresponding animation, so onTransitionComplete is not called and the lifecycle never reaches Resumed. Conversely, we should not call pop (without transition) for the case where animation is running, because the lifecycle would become Resumed too early.
jn...@google.com <jn...@google.com> #8
Branch: androidx-main
commit 4c67987dbc870d8e35d811af15ae3edb36f1c836
Author: stevebower <stevebower@google.com>
Date: Mon Mar 28 14:54:44 2022
Destinations do not reach Lifecycle RESUMED after popping the navigation back stack
Test: androidx.wear.compose.navigation
Bug: 202863359
Change-Id: Iff21b4603fd126120241661e066dfaf294d9c25c
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
Description
Version used: 1.0.0-beta02
Devices/Android versions reproduced on:
- Can be 100% reproduced on Samsung SM-R870, SM-R865F (both are Android 11, Wear 3.2, One UI 4.0)
- Failed to reproduce on Wear OS Simulator (API 30, Wear 3.2)
Description:
I found sometimes ScalingLazyColumn wouldn't display items at first until I scrolled the view. (My displayed items are not dynamically changed by recompose. The only thing I do is scrolling.)
And I also found that (1) if I add another item to ScalingLazyColumn and rebuild the app, or (2) if I add some vertical padding to one of the item,
items could be display successfully.
So I guess it might be related to the item height or item count... I'm not sure.
- Code:
(With the code above, the issue could be 100% reproduce on Samsung SM-R870, SM-R865F)