Merge "Don't register multiple predraw listeners" into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e07b60ab9e
@@ -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();
|
||||
}
|
||||
|
||||
@@ -238,6 +238,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
|
||||
}
|
||||
mColorExtractor.removeOnColorsChangedListener(mColorsListener);
|
||||
mView.setClockPlugin(null, mStatusBarStateController.getState());
|
||||
mView.onViewDetached();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user