Merge "Fix race condition with GC in TransitionManager"

This commit is contained in:
Yuichi Araki
2018-05-07 22:12:58 +00:00
committed by Android (Google) Code Review

View File

@@ -210,14 +210,16 @@ public class TransitionManager {
private static ArrayMap<ViewGroup, ArrayList<Transition>> getRunningTransitions() {
WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>> runningTransitions =
sRunningTransitions.get();
if (runningTransitions == null || runningTransitions.get() == null) {
ArrayMap<ViewGroup, ArrayList<Transition>> transitions =
new ArrayMap<ViewGroup, ArrayList<Transition>>();
runningTransitions = new WeakReference<ArrayMap<ViewGroup, ArrayList<Transition>>>(
transitions);
sRunningTransitions.set(runningTransitions);
if (runningTransitions != null) {
ArrayMap<ViewGroup, ArrayList<Transition>> transitions = runningTransitions.get();
if (transitions != null) {
return transitions;
}
}
return runningTransitions.get();
ArrayMap<ViewGroup, ArrayList<Transition>> transitions = new ArrayMap<>();
runningTransitions = new WeakReference<>(transitions);
sRunningTransitions.set(runningTransitions);
return transitions;
}
private static void sceneChangeRunTransition(final ViewGroup sceneRoot,