Fixed
Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.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
va...@google.com <va...@google.com> #3
il...@google.com <il...@google.com>
al...@gmail.com <al...@gmail.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
va...@google.com <va...@google.com> #5
No, the states would follow the same lifetime as other state stored in SavedStateHandle
, which follows the same rules as Saved instance state
from that table (serialized to disk, survives process death, only supports simple, small objects).
The goal isn't to all state to survive user completion of the activity, but to allow using the same Saver
abstraction for rememberSaveable
and SavedStateHandle
.
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-main
commit 0d614efac51fd8308d3a8d1a4ac3a86fd89caa03
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Mar 01 17:01:49 2022
Add experimental SavedStateHandle Saver support
Added an experimental API at the lifecycle level to provide a temporary
hook for SavedStateHandle into compose Saver while we work on a longer
term integration plan.
RelNote: "The `lifecycle-viewmodel-compose` module now provides
`SavedStateHandleSaver`, an experimental API that ensures values in a
`SavedStateHandle` are integrated correctly with the same saved instance
state that `rememberSaveable` uses."
Test: N/A
Bug: 195689777
Change-Id: Ia88b79c56a5f82263ddaf436777dfc1c4ab73704
M lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-savedstate/src/main/java/androidx/lifecycle/SavedStateHandle.kt
M lifecycle/lifecycle-viewmodel-compose/api/current.txt
M lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt
M lifecycle/lifecycle-viewmodel-compose/build.gradle
A lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaveableApi.kt
A lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaverTest.kt
A lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt
https://android-review.googlesource.com/2005170
Branch: androidx-main
commit 0d614efac51fd8308d3a8d1a4ac3a86fd89caa03
Author: Jeremy Woods <jbwoods@google.com>
Date: Tue Mar 01 17:01:49 2022
Add experimental SavedStateHandle Saver support
Added an experimental API at the lifecycle level to provide a temporary
hook for SavedStateHandle into compose Saver while we work on a longer
term integration plan.
RelNote: "The `lifecycle-viewmodel-compose` module now provides
`SavedStateHandleSaver`, an experimental API that ensures values in a
`SavedStateHandle` are integrated correctly with the same saved instance
state that `rememberSaveable` uses."
Test: N/A
Bug: 195689777
Change-Id: Ia88b79c56a5f82263ddaf436777dfc1c4ab73704
M lifecycle/lifecycle-viewmodel-compose/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-savedstate/src/main/java/androidx/lifecycle/SavedStateHandle.kt
M lifecycle/lifecycle-viewmodel-compose/api/current.txt
M lifecycle/lifecycle-viewmodel-compose/api/public_plus_experimental_current.txt
M lifecycle/lifecycle-viewmodel-compose/build.gradle
A lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaveableApi.kt
A lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaverTest.kt
A lifecycle/lifecycle-viewmodel-compose/src/main/java/androidx/lifecycle/viewmodel/compose/SavedStateHandleSaver.kt
jb...@google.com <jb...@google.com> #7
This has been added internally and will be in the Lifecycle 2.5.0-alpha05
release.
Description
Compose provides
rememberSaveable
, along with accompanying tools likeSaver
andSaveableStateRegistry
as its mechanisms for storing saved instance state. Currently, there isn't a provided interoperability layer between these tools andSavedStateHandle
.If
SavedStateHandle
isn't used in theViewModel
, state that is hoisted from@Composable
s toViewModel
s won't be stored to saved instance state. This might either cause bugs due to state loss upon process death, or act as a barrier to hoisting state sufficiently if it seems likerememberSaveable
has to be used to remember state across process recreation.The proposal is to provide the necessary hooks for
SavedStateHandle
withSaver
so that any state holder that is being saved viarememberSaveable
could also be saved withSavedStateHandle
.