Fixed
Status Update
Comments
yu...@gmail.com <yu...@gmail.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
https://android-review.googlesource.com/1123258
https://goto.google.com/android-sha1/b90079595f33f58fece04026a97faa0d243acdb1
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
il...@google.com <il...@google.com> #3
il...@google.com <il...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically ( b/140759491 ).
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
https://android-review.googlesource.com/1288456
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically (
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 8ed73a2b43c94f0a1deaf12ab13e5161c2fab5cf
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Sep 28 18:09:48 2021
Modify NavBackStackEntry equality
Including the Lifecycle and SavedStateRegistry in the NavBackStackEntry
equals and hashcode functions. This will fix our issues in compose where
different instances of NavBackStackEntry were considered the same and we
were not recomposing properly.
This change always required the following:
Ensuring that ViewModels are not cleared during singleTop operations
Making sure markTransitionComplete clears all entries with the same ID
Ensure when NavController calls onSingleTop we update the links between
child and parents
We also made onLaunchSingleTop in NavigatorState a single atomic
operation to remove the old entry and add the new one.
RelNote: "NavBackStackEntries now with different Lifecycles are not
longer considered equal. This means NavHost will properly recompose all
destinations when doing navigation with singleTop and when reselecting
bottom menu items."
Bug: 196997433
Test: Added tests
Change-Id: I1b3510b238d3c4e6ed5cc86a6fddf795bd9acb02
M navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryTest.kt
M navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavigatorStateTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
M navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavigatorState.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryLifecycleTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt
https://android-review.googlesource.com/1839538
Branch: androidx-main
commit 8ed73a2b43c94f0a1deaf12ab13e5161c2fab5cf
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Sep 28 18:09:48 2021
Modify NavBackStackEntry equality
Including the Lifecycle and SavedStateRegistry in the NavBackStackEntry
equals and hashcode functions. This will fix our issues in compose where
different instances of NavBackStackEntry were considered the same and we
were not recomposing properly.
This change always required the following:
Ensuring that ViewModels are not cleared during singleTop operations
Making sure markTransitionComplete clears all entries with the same ID
Ensure when NavController calls onSingleTop we update the links between
child and parents
We also made onLaunchSingleTop in NavigatorState a single atomic
operation to remove the old entry and add the new one.
RelNote: "NavBackStackEntries now with different Lifecycles are not
longer considered equal. This means NavHost will properly recompose all
destinations when doing navigation with singleTop and when reselecting
bottom menu items."
Bug: 196997433
Test: Added tests
Change-Id: I1b3510b238d3c4e6ed5cc86a6fddf795bd9acb02
M navigation/navigation-common/src/main/java/androidx/navigation/NavigatorState.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryTest.kt
M navigation/navigation-testing/src/androidTest/java/androidx/navigation/testing/TestNavigatorStateTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
M navigation/navigation-testing/src/main/java/androidx/navigation/testing/TestNavigatorState.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavBackStackEntryLifecycleTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt
jb...@google.com <jb...@google.com> #6
This has been fixed internally and will be available in the next Navigation release.
yu...@gmail.com <yu...@gmail.com> #7
That's great! Is there Snapshot build number I can try before the release to test/use it?
yu...@gmail.com <yu...@gmail.com> #8
Looks like
yu...@gmail.com <yu...@gmail.com> #9
I tried build #7796270 and looks like the bug is gone. Thanks!
Description
Component used: Navigation Version used: Snapshot #7634339 or 2.4.0-alpha07 Devices/Android versions reproduced on: Pixel 4a
This issue is related to another fixed issue: https://issuetracker.google.com/issues/194925622
2.4.0-alpha05 introduced a bug where tab reselection causes empty screens, unless the current screen is the
startDestination
of the root graph.The issue was fixed in Snapshot #7634339 , but it introduced another bug:
Flows collected in compose screens via
rememberFlowWithLifecycle(flow).collectAsState(initial)
complete early on tab reselection, like in the original issue. AboutrememberFlowWithLifecycle
Attaching the minimal sample that shows the problem and a video.
In sample view model, there is a simple flow that emits text in some interval.
In 2.4.0-alpha04 - Collecting flows directly via collectAsState or via rememberFlowWithLifecycle works as expected (interval Flow doesn't complete until the user leaves the screen)
In 2.4.0-alpha05-06 - Screen becomes empty on tab reselection
In Snapshot #7634339 / 2.4.0-alpha07:
rememberFlowWithLifecycle