Merge "Fix memory leak via ZenModeController callbacks." into nyc-dev

This commit is contained in:
TreeHugger Robot
2016-06-02 21:05:55 +00:00
committed by Android (Google) Code Review
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) {
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);
}
};
}

View File

@@ -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() {