Fixed
Status Update
Comments
ia...@gmail.com <ia...@gmail.com> #2
What I'd like to see is a CoroutineScope.asClosableCoroutineScope()
method and making viewModelScope
a parameter that has a default value that you can override in your test to pass something tied to testScope
.
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
mg...@google.com <mg...@google.com>
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit 83e99ecaee1153dc0603e10d6123b00fb2a30eb2
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Tue Feb 27 10:43:01 2024
Allow overriding a `viewModelScope` instance from a `ViewModel`
* `viewModelScope` is now an overrideable constructor parameter, allowing it to be replaced during tests.
* For KMP usage, addresses platforms where `Dispatchers.Main` may be unavailable by falling back to `EmptyCoroutineContext` (e.g., Linux).
Reasons for preferring the constructor parameter over a overrideable property:
* Reduces brittleness due to reliance on a overrideable property name.
* Opens possibilities for writing a Lint check to enforce correct usage (in teams that want to commit to always inject a `viewModelScope`).
* Maintains the existing `viewModelScope` API for minimal developer churn.
RelNote: "`ViewModel.viewModelScope` is now a overrideable constructor parameter."
Fixes: 264598574
Test: ViewModelScopeTest
Change-Id: I2817ca223e31fb3e66b1b87b470b2eb26c2fac55
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewModelScopeTest.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/CloseableCoroutineScope.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelImpl.kt
M lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/ViewModel.jvm.kt
M lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModel.native.kt
https://android-review.googlesource.com/2984672
Branch: androidx-main
commit 83e99ecaee1153dc0603e10d6123b00fb2a30eb2
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Tue Feb 27 10:43:01 2024
Allow overriding a `viewModelScope` instance from a `ViewModel`
* `viewModelScope` is now an overrideable constructor parameter, allowing it to be replaced during tests.
* For KMP usage, addresses platforms where `Dispatchers.Main` may be unavailable by falling back to `EmptyCoroutineContext` (e.g., Linux).
Reasons for preferring the constructor parameter over a overrideable property:
* Reduces brittleness due to reliance on a overrideable property name.
* Opens possibilities for writing a Lint check to enforce correct usage (in teams that want to commit to always inject a `viewModelScope`).
* Maintains the existing `viewModelScope` API for minimal developer churn.
RelNote: "`ViewModel.viewModelScope` is now a overrideable constructor parameter."
Fixes: 264598574
Test: ViewModelScopeTest
Change-Id: I2817ca223e31fb3e66b1b87b470b2eb26c2fac55
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewModelScopeTest.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/CloseableCoroutineScope.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelImpl.kt
M lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/ViewModel.jvm.kt
M lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModel.native.kt
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 42930bf5e811fc381f1b43e1fb0e0492e7992b02
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Tue Mar 05 11:33:53 2024
Remove duplicated `VIEW_MODEL_SCOPE_KEY`
* aosp/2984672 left a unused `VIEW_MODEL_SCOPE_KEY`, replaced by `androidx.lifecycle.viewmodel.internal.VIEW_MODEL_SCOPE_KEY`.
Bug: 264598574
Test: ViewModelScopeTest
Change-Id: I6ea15a5921aa1acfd0bf427e54a5f6db19787604
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
https://android-review.googlesource.com/2988413
Branch: androidx-main
commit 42930bf5e811fc381f1b43e1fb0e0492e7992b02
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Tue Mar 05 11:33:53 2024
Remove duplicated `VIEW_MODEL_SCOPE_KEY`
* aosp/2984672 left a unused `VIEW_MODEL_SCOPE_KEY`, replaced by `androidx.lifecycle.viewmodel.internal.VIEW_MODEL_SCOPE_KEY`.
Bug: 264598574
Test: ViewModelScopeTest
Change-Id: I6ea15a5921aa1acfd0bf427e54a5f6db19787604
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
pr...@google.com <pr...@google.com> #5
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.lifecycle:lifecycle-viewmodel:2.8.0-alpha03
androidx.lifecycle:lifecycle-viewmodel-android:2.8.0-alpha03
Description
Component used:
androidx.lifecycle:lifecycle-viewmodel-ktx
Version used:
2.5.1
Devices/Android versions reproduced on: n/a
Given the new APIs for adding closables to view models,
viewModelScope
should probably be marked as discouraged or deprecated in order to promote testability.