Status Update
Comments
il...@google.com <il...@google.com> #2
I think the biggest problem here might be naming - lifecycle.currentStateAsState()
is a mouthful.
va...@google.com <va...@google.com> #3
Would val Lifecycle.state: @Composable get(): androidx.compose.runtime.State<Lifecycle.State> = ...
be too unclear?
That drops the reference to "current" (in that sense that a return type of androidx.compose.runtime.State
implies that it will be the current value that is observable from Compose)
il...@google.com <il...@google.com> #4
I don't think that necessarily helps fix the confusion between Lifecycle.State
and Compose's State
- it is an inherently overloaded term in this case.
I think this may make more sense building upon StateFlow
), which would allow for the already existing collectAsState()
to handle the translation to Compose State. It would also mean we wouldn't need any separate -compose
artifact that you'd need to remember to add.
ra...@gmail.com <ra...@gmail.com> #5
il...@google.com <il...@google.com>
sa...@google.com <sa...@google.com>
ap...@google.com <ap...@google.com> #6
Branch: androidx-main
commit b75b447af3d27aed4b4bc5a826e6e92cd0aaff34
Author: sanura <sanura@google.com>
Date: Tue Mar 07 00:37:35 2023
Add Compose-observable StateFlow<Lifecycle.State> for current Lifecycle state
When trying to observe Lifecycle.State changes in Compose,
the most natural way is to use Compose State functionality,
so we want to add a new property to Lifecycle that will
expose its Lifecycle.State as a Compose State.
RelNote: "`Lifecycle.State` is now Compose-observable via
`Lifecycle.currentStateFlow`, which returns a `StateFlow`
where the `value` is the current `Lifecycle.State`."
Fixes: 209684871
Test: getCurrentStateFlow()
Change-Id: Ib212d9b84307e0397306e521ceaae41e2c76d532
M lifecycle/lifecycle-common/api/current.txt
M lifecycle/lifecycle-common/api/public_plus_experimental_current.txt
M lifecycle/lifecycle-common/api/restricted_current.txt
M lifecycle/lifecycle-common/src/main/java/androidx/lifecycle/Lifecycle.kt
M lifecycle/lifecycle-runtime-testing/src/test/java/androidx/lifecycle/testing/LifecycleRegistryTest.kt
M lifecycle/lifecycle-runtime/api/current.txt
M lifecycle/lifecycle-runtime/api/public_plus_experimental_current.txt
M lifecycle/lifecycle-runtime/api/restricted_current.txt
M lifecycle/lifecycle-runtime/src/main/java/androidx/lifecycle/LifecycleRegistry.kt
na...@google.com <na...@google.com> #7
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.lifecycle:lifecycle-common:2.7.0-alpha01
androidx.lifecycle:lifecycle-runtime:2.7.0-alpha01
androidx.lifecycle:lifecycle-runtime-testing:2.7.0-alpha01
Description
We can observe Lifecycle changes in a few different ways, but with Compose the most natural way would be via a
State<Lifecycle.State>
, which would make the currentLifecycle.State
automatically observable to Compose.