Fixed
Status Update
Comments
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-master-dev
commit e36c65f67e49ddbfa0080542295f4a4850ae17da
Author: Sumir Kataria <sumir@google.com>
Date: Tue Aug 07 13:04:03 2018
Enforce ConstraintTracker#setState is on the main thread.
- setState now asserts that we are on the main thread
- Moved assert*Thread methods into their own utils
- Annotated several tests manually calling onBroadcastReceive
as @UiThreadTest as our broadcast receivers only operate on
the main thread (they use the default registerReceiver
method)
- NetworkCallbacks are invoked on non-main threads by default;
in this case, we re-post them to the main thread
This is part of the solution to a concurrency exception in
ConstraintTracker.
Bug: 112272753
Test: Updated and ran tests
Change-Id: I7011e5993b814f4fcafe861e283a827cd1edee12
M work/workmanager/build.gradle
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/workers/ConstraintTrackingWorkerTest.java
M work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java
M work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
M work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java
M work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java
A work/workmanager/src/main/java/androidx/work/impl/utils/ThreadUtils.java
https://android-review.googlesource.com/727429
https://goto.google.com/android-sha1/e36c65f67e49ddbfa0080542295f4a4850ae17da
Branch: androidx-master-dev
commit e36c65f67e49ddbfa0080542295f4a4850ae17da
Author: Sumir Kataria <sumir@google.com>
Date: Tue Aug 07 13:04:03 2018
Enforce ConstraintTracker#setState is on the main thread.
- setState now asserts that we are on the main thread
- Moved assert*Thread methods into their own utils
- Annotated several tests manually calling onBroadcastReceive
as @UiThreadTest as our broadcast receivers only operate on
the main thread (they use the default registerReceiver
method)
- NetworkCallbacks are invoked on non-main threads by default;
in this case, we re-post them to the main thread
This is part of the solution to a concurrency exception in
ConstraintTracker.
Bug: 112272753
Test: Updated and ran tests
Change-Id: I7011e5993b814f4fcafe861e283a827cd1edee12
M work/workmanager/build.gradle
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryChargingTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/BatteryNotLowTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/ConstraintTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/constraints/trackers/StorageNotLowTrackerTest.java
M work/workmanager/src/androidTest/java/androidx/work/impl/workers/ConstraintTrackingWorkerTest.java
M work/workmanager/src/main/java/androidx/work/impl/WorkManagerImpl.java
M work/workmanager/src/main/java/androidx/work/impl/background/systemalarm/SystemAlarmDispatcher.java
M work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/ConstraintTracker.java
M work/workmanager/src/main/java/androidx/work/impl/constraints/trackers/NetworkStateTracker.java
A work/workmanager/src/main/java/androidx/work/impl/utils/ThreadUtils.java
ap...@google.com <ap...@google.com> #3
il...@google.com <il...@google.com> #4
This decoupling has been complete and will be available in Lifecycle 2.5.0-alpha06.
Description
Component used: Lifecycle
Version used: 2.5.0-alpha01
Currently the call to
enableSavedStateHandles()
creates aViewModel
using theViewModelStore
. This requires that the ViewModelStore be set on any component attempting to make the call, but there are scenarios where the call toenableSavedStateHandles
needs to happen before that in particular in the Fragment and Navigation components where the call is not immediately made when the object is constructed or sometimes not at all.If we remove the reliance on
SavedStateHandles
(and therefore view models), we can lean into theSavedStateProvider
APIs and the call toenableSavedStateHandles()
can be made before theViewModelStore
is set.