Merge "Don't register multiple predraw listeners" into sc-v2-dev am: e07b60ab9e am: 10c601355f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16094262

Change-Id: Id39d67717ea7cb51744733629e936d2f3e6d54ea
This commit is contained in:
TreeHugger Robot
2021-10-20 19:37:07 +00:00
committed by Automerger Merge Worker
3 changed files with 18 additions and 10 deletions

View File

@@ -89,6 +89,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
private int mClockSwitchYAmount;
@VisibleForTesting boolean mChildrenAreLaidOut = false;
private OnPreDrawListener mPreDrawListener;
public KeyguardClockSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -284,15 +285,14 @@ public class KeyguardClockSwitch extends RelativeLayout {
if (mChildrenAreLaidOut) {
animateClockChange(clockSize == LARGE);
mDisplayedClockSize = clockSize;
} else {
getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
switchToClock(clockSize);
getViewTreeObserver().removeOnPreDrawListener(this);
return true;
}
});
} else if (mPreDrawListener == null) {
mPreDrawListener = () -> {
switchToClock(clockSize);
getViewTreeObserver().removeOnPreDrawListener(mPreDrawListener);
mPreDrawListener = null;
return true;
};
getViewTreeObserver().addOnPreDrawListener(mPreDrawListener);
}
return true;
}
@@ -303,6 +303,13 @@ public class KeyguardClockSwitch extends RelativeLayout {
mChildrenAreLaidOut = true;
}
void onViewDetached() {
if (mPreDrawListener != null) {
getViewTreeObserver().removeOnPreDrawListener(mPreDrawListener);
mPreDrawListener = null;
}
}
public Paint getPaint() {
return mClockView.getPaint();
}

View File

@@ -238,6 +238,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
}
mColorExtractor.removeOnColorsChangedListener(mColorsListener);
mView.setClockPlugin(null, mStatusBarStateController.getState());
mView.onViewDetached();
}
/**

View File

@@ -194,7 +194,7 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase {
verifyAttachment(times(1));
listenerArgumentCaptor.getValue().onViewDetachedFromWindow(mView);
verify(mView).onViewDetached();
verify(mColorExtractor).removeOnColorsChangedListener(
any(ColorExtractor.OnColorsChangedListener.class));
}