Fixed
Status Update
Comments
an...@google.com <an...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 90c759fa3f4fa6f22fa109c5269682b3f288e0f1
Author: Andrey Kulikov <andreykulikov@google.com>
Date: Tue Mar 30 18:16:55 2021
Fix for rememberSaveable() restoring incorrect value when used with input
Fixes: 182403380
Relnote: Fixed the issue when rememberSaveable() was restoring the old value when used with input params
Test: new test in RememberSaveableTest
Change-Id: I1b1108e2d8f141887a46e781d4fe04a0d84cd09c
M compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt
M compose/runtime/runtime-saveable/src/commonMain/kotlin/androidx/compose/runtime/saveable/RememberSaveable.kt
https://android-review.googlesource.com/1657996
Branch: androidx-main
commit 90c759fa3f4fa6f22fa109c5269682b3f288e0f1
Author: Andrey Kulikov <andreykulikov@google.com>
Date: Tue Mar 30 18:16:55 2021
Fix for rememberSaveable() restoring incorrect value when used with input
Fixes: 182403380
Relnote: Fixed the issue when rememberSaveable() was restoring the old value when used with input params
Test: new test in RememberSaveableTest
Change-Id: I1b1108e2d8f141887a46e781d4fe04a0d84cd09c
M compose/runtime/runtime-saveable/src/androidAndroidTest/kotlin/androidx/compose/runtime/saveable/RememberSaveableTest.kt
M compose/runtime/runtime-saveable/src/commonMain/kotlin/androidx/compose/runtime/saveable/RememberSaveable.kt
Description
Version used: 1.4.2
Devices/Android versions reproduced on: Pixel 4
If this is a bug in the library, we would appreciate if you could attach:
- Sample project to trigger the issue.
- A screenrecord or screenshots showing the issue (if UI related).
Step to reproduce:
1) Import project from google3/experimental/users/ychr/java/dev/viewpager/
2) patch cl/362126372
3) build and deploy the app: a view pager with 5 pages
4) select "Gray" tab to go to gray page
The followings are in log
2021-03-10 12:03:06.532 30105-30105/dev.viewpager I/ViewPagerState: before rememberSaveable content.value.items.size 5
2021-03-10 12:03:06.532 30105-30105/dev.viewpager I/ViewPagerState: state dev.viewpager.render.ViewPagerState@19b483b current page 2
5) tap on "Delete this page" button to delete gray page --> view page switches to first tab(page) : blue page
The followings are in log
2021-03-10 12:03:30.345 30105-30105/dev.viewpager I/ViewPagerState: before rememberSaveable content.value.items.size 4
2021-03-10 12:03:30.345 30105-30105/dev.viewpager I/ViewPagerState: state dev.viewpager.render.ViewPagerState@5caf269 current page 0
6) rotate the screen, green page (page index 2) is displayed instead of blue page
The followings are in log
2021-03-10 12:03:36.849 30105-30105/dev.viewpager I/ViewPagerState: before rememberSaveable content.value.items.size 4
2021-03-10 12:03:36.850 30105-30105/dev.viewpager I/ViewPagerState: state dev.viewpager.render.ViewPagerState@2ab65be current page 2
Examing `rememberSaveable` source code,
If the `value` changes in
it won't trigger a re-save, because the sideeffect only runs when `registry` and `finalKey` changes
A fix like
will address the issue