Fixed
Status Update
Comments
il...@google.com <il...@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
ch...@google.com <ch...@google.com> #3
il...@google.com <il...@google.com> #5
Moving this to the Fragment component since this is not related to Navigation - the same thing occurs when using fragment transactions directly when using setReorderingAllowed(true).
il...@google.com <il...@google.com>
an...@gmail.com <an...@gmail.com> #6
Is there any update on this issue? It's been reported in March.
jb...@google.com <jb...@google.com>
li...@gmail.com <li...@gmail.com> #7
Is there any progress or workaround?
This issue may trigger many chain reactions, e.g. LiveData observer's onChange
never be called.
il...@google.com <il...@google.com> #8
Re #7 - this is being actively worked on in the
il...@google.com <il...@google.com> #9
A postponed fragment will never reach onResume()
(part of the contract of a postponed fragment is that it can only go up to STARTED
), so the example project needed to be changed to use onStart()
.
That being said, this has been fixed internally and will be avilable in Fragment 1.3.0-alpha08.
Note: this fix relies on using the
Description
Version used: 2.0.0
The fragment I use as my startDestination uses postponeEnterTransition() and startPostponedEnterTransition() for transition purposes. When my app is opened though, that fragment is never actually visible.
This is because the Fragment does *not* receive onStart() or onResume(), so my data source is never setup, so I do not call scheduleStartPostponedTransitions(). The last lifecycle callback I get is onViewCreated().
If I remove the call to postponeEnterTransition() then everything works as normal, except my transitions.