diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java | 32 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java | 3 |
2 files changed, 24 insertions, 11 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java index 005767f7a09e..65975d9e9f33 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java @@ -70,16 +70,6 @@ public class ZenFooter extends LinearLayout { } public void init(final ZenModeController controller) { - controller.addCallback(new ZenModeController.Callback() { - @Override - public void onZenChanged(int zen) { - setZen(zen); - } - @Override - public void onConfigChanged(ZenModeConfig config) { - setConfig(config); - } - }); mEndNowButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -92,6 +82,18 @@ public class ZenFooter extends LinearLayout { update(); } + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mController.addCallback(mZenCallback); + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + mController.removeCallback(mZenCallback); + } + private void setZen(int zen) { if (mZen == zen) return; mZen = zen; @@ -143,4 +145,14 @@ public class ZenFooter extends LinearLayout { mSpTexts.update(); } + private final ZenModeController.Callback mZenCallback = new ZenModeController.Callback() { + @Override + public void onZenChanged(int zen) { + setZen(zen); + } + @Override + public void onConfigChanged(ZenModeConfig config) { + setConfig(config); + } + }; } diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java index 0c712be8b12a..15c163f6e281 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java @@ -231,6 +231,7 @@ public class ZenModePanel extends LinearLayout { mAttachedZen = getSelectedZen(-1); mSessionZen = mAttachedZen; mTransitionHelper.clear(); + mController.addCallback(mZenCallback); setSessionExitCondition(copy(mExitCondition)); updateWidgets(); setRequestingConditions(!mHidden); @@ -244,6 +245,7 @@ public class ZenModePanel extends LinearLayout { mAttached = false; mAttachedZen = -1; mSessionZen = -1; + mController.removeCallback(mZenCallback); setSessionExitCondition(null); setRequestingConditions(false); mTransitionHelper.clear(); @@ -329,7 +331,6 @@ public class ZenModePanel extends LinearLayout { handleUpdateManualRule(mController.getManualRule()); if (DEBUG) Log.d(mTag, "init mExitCondition=" + mExitCondition); hideAllConditions(); - mController.addCallback(mZenCallback); } public void updateLocale() { |