Merge "Fix memory leak via ZenModeController callbacks." into nyc-dev am: 30e434a996

am: 84e725309c

* commit '84e725309c468b9f8d49e25562b6ee400c79992e':
  Fix memory leak via ZenModeController callbacks.

Change-Id: I865083fdfb2ddaa77d772d77770c1a48859dc03c
This commit is contained in:
Julia Reynolds
2016-06-02 21:21:27 +00:00
committed by android-build-merger
2 changed files with 24 additions and 11 deletions

View File

@@ -70,16 +70,6 @@ public class ZenFooter extends LinearLayout {
} }
public void init(final ZenModeController controller) { 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() { mEndNowButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@@ -92,6 +82,18 @@ public class ZenFooter extends LinearLayout {
update(); update();
} }
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
mController.addCallback(mZenCallback);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mController.removeCallback(mZenCallback);
}
private void setZen(int zen) { private void setZen(int zen) {
if (mZen == zen) return; if (mZen == zen) return;
mZen = zen; mZen = zen;
@@ -143,4 +145,14 @@ public class ZenFooter extends LinearLayout {
mSpTexts.update(); 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);
}
};
} }

View File

@@ -234,6 +234,7 @@ public class ZenModePanel extends LinearLayout {
mAttachedZen = getSelectedZen(-1); mAttachedZen = getSelectedZen(-1);
mSessionZen = mAttachedZen; mSessionZen = mAttachedZen;
mTransitionHelper.clear(); mTransitionHelper.clear();
mController.addCallback(mZenCallback);
setSessionExitCondition(copy(mExitCondition)); setSessionExitCondition(copy(mExitCondition));
updateWidgets(); updateWidgets();
setRequestingConditions(!mHidden); setRequestingConditions(!mHidden);
@@ -247,6 +248,7 @@ public class ZenModePanel extends LinearLayout {
mAttached = false; mAttached = false;
mAttachedZen = -1; mAttachedZen = -1;
mSessionZen = -1; mSessionZen = -1;
mController.removeCallback(mZenCallback);
setSessionExitCondition(null); setSessionExitCondition(null);
setRequestingConditions(false); setRequestingConditions(false);
mTransitionHelper.clear(); mTransitionHelper.clear();
@@ -332,7 +334,6 @@ public class ZenModePanel extends LinearLayout {
handleUpdateManualRule(mController.getManualRule()); handleUpdateManualRule(mController.getManualRule());
if (DEBUG) Log.d(mTag, "init mExitCondition=" + mExitCondition); if (DEBUG) Log.d(mTag, "init mExitCondition=" + mExitCondition);
hideAllConditions(); hideAllConditions();
mController.addCallback(mZenCallback);
} }
public void updateLocale() { public void updateLocale() {