diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java index 88c09dc0fcf59..3c37ede37e4e6 100644 --- a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java +++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java @@ -18,7 +18,6 @@ package com.android.systemui.battery; import static android.provider.Settings.System.SHOW_BATTERY_PERCENT; import static com.android.systemui.DejankUtils.whitelistIpcs; -import static com.android.systemui.util.SysuiLifecycle.viewAttachLifecycle; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -61,8 +60,6 @@ import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback; -import com.android.systemui.statusbar.policy.ConfigurationController; -import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; @@ -72,8 +69,7 @@ import java.lang.annotation.Retention; import java.text.NumberFormat; public class BatteryMeterView extends LinearLayout implements - BatteryStateChangeCallback, Tunable, DarkReceiver, ConfigurationListener { - + BatteryStateChangeCallback, Tunable, DarkReceiver { @Retention(SOURCE) @IntDef({MODE_DEFAULT, MODE_ON, MODE_OFF, MODE_ESTIMATE}) @@ -167,7 +163,6 @@ public class BatteryMeterView extends LinearLayout implements setClipChildren(false); setClipToPadding(false); - Dependency.get(ConfigurationController.class).observe(viewAttachLifecycle(this), this); } private void setupLayoutTransition() { @@ -398,11 +393,6 @@ public class BatteryMeterView extends LinearLayout implements } } - @Override - public void onDensityOrFontScaleChanged() { - scaleBatteryMeterViews(); - } - private Drawable getUnknownStateDrawable() { if (mUnknownStateDrawable == null) { mUnknownStateDrawable = mContext.getDrawable(R.drawable.ic_battery_unknown); @@ -432,7 +422,7 @@ public class BatteryMeterView extends LinearLayout implements /** * Looks up the scale factor for status bar icons and scales the battery view by that amount. */ - private void scaleBatteryMeterViews() { + void scaleBatteryMeterViews() { Resources res = getContext().getResources(); TypedValue typedValue = new TypedValue(); diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java index 27a6b3c18bbb3..198aa4ab82777 100644 --- a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java +++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterViewController.java @@ -15,22 +15,44 @@ */ package com.android.systemui.battery; +import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.ViewController; import javax.inject.Inject; + /** Controller for {@link BatteryMeterView}. **/ public class BatteryMeterViewController extends ViewController { + private final ConfigurationController mConfigurationController; + + private final ConfigurationController.ConfigurationListener mConfigurationListener = + new ConfigurationController.ConfigurationListener() { + @Override + public void onDensityOrFontScaleChanged() { + mView.scaleBatteryMeterViews(); + } + }; @Inject - public BatteryMeterViewController(BatteryMeterView view) { + public BatteryMeterViewController( + BatteryMeterView view, + ConfigurationController configurationController) { super(view); + mConfigurationController = configurationController; } @Override protected void onViewAttached() { + mConfigurationController.addCallback(mConfigurationListener); } @Override protected void onViewDetached() { + destroy(); } -} + + @Override + public void destroy() { + super.destroy(); + mConfigurationController.removeCallback(mConfigurationListener); + } +} \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java index bfadc3f7582a3..8770e86df7351 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java @@ -159,10 +159,16 @@ public class KeyguardStatusBarViewController extends ViewController