Merge "Fix memory leak via ZenModeController callbacks." into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
30e434a996
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user