Merge changes from topic "stop-leaked-animators" into tm-dev am: a4ac1574bd
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18602917 Change-Id: If9be28194b5b9e72b18d12fe10676e7e44ffeb4d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package android.animation;
|
||||
|
||||
import android.os.SystemClock;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.Log;
|
||||
@@ -54,7 +55,10 @@ public class AnimationHandler {
|
||||
private AnimationFrameCallbackProvider mProvider;
|
||||
|
||||
// Static flag which allows the pausing behavior to be globally disabled/enabled.
|
||||
private static boolean sAnimatorPausingEnabled = true;
|
||||
private static boolean sAnimatorPausingEnabled = isPauseBgAnimationsEnabledInSystemProperties();
|
||||
|
||||
// Static flag which prevents the system property from overriding sAnimatorPausingEnabled field.
|
||||
private static boolean sOverrideAnimatorPausingSystemProperty = false;
|
||||
|
||||
/**
|
||||
* This paused list is used to store animators forcibly paused when the activity
|
||||
@@ -96,6 +100,18 @@ public class AnimationHandler {
|
||||
return sAnimatorHandler.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* System property that controls the behavior of pausing infinite animators when an app
|
||||
* is moved to the background.
|
||||
*
|
||||
* @return the value of 'framework.pause_bg_animations.enabled' system property
|
||||
*/
|
||||
private static boolean isPauseBgAnimationsEnabledInSystemProperties() {
|
||||
if (sOverrideAnimatorPausingSystemProperty) return sAnimatorPausingEnabled;
|
||||
return SystemProperties
|
||||
.getBoolean("framework.pause_bg_animations.enabled", true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the default behavior of pausing infinite animators when
|
||||
* apps go into the background.
|
||||
@@ -106,6 +122,19 @@ public class AnimationHandler {
|
||||
sAnimatorPausingEnabled = enable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevents the setAnimatorPausingEnabled behavior from being overridden
|
||||
* by the 'framework.pause_bg_animations.enabled' system property value.
|
||||
*
|
||||
* This is for testing purposes only.
|
||||
*
|
||||
* @param enable Enable or disable (default behavior) overriding the system
|
||||
* property.
|
||||
*/
|
||||
public static void setOverrideAnimatorPausingSystemProperty(boolean enable) {
|
||||
sOverrideAnimatorPausingSystemProperty = enable;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called when a window goes away. We should remove
|
||||
* it from the requestors list to ensure that we are counting requests correctly and not
|
||||
@@ -143,6 +172,7 @@ public class AnimationHandler {
|
||||
|
||||
private void requestAnimatorsEnabledImpl(boolean enable, Object requestor) {
|
||||
boolean wasEmpty = mAnimatorRequestors.isEmpty();
|
||||
setAnimatorPausingEnabled(isPauseBgAnimationsEnabledInSystemProperties());
|
||||
if (enable) {
|
||||
mAnimatorRequestors.add(requestor);
|
||||
} else {
|
||||
|
||||
@@ -104,6 +104,7 @@ public abstract class Animator implements Cloneable {
|
||||
@TestApi
|
||||
public static void setAnimatorPausingEnabled(boolean enable) {
|
||||
AnimationHandler.setAnimatorPausingEnabled(enable);
|
||||
AnimationHandler.setOverrideAnimatorPausingSystemProperty(!enable);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user