summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/ZenModePanel.java3
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() {