Merge "QS: Fix leak in QSAnimator" into nyc-dev

This commit is contained in:
Jason Monk
2016-06-08 19:12:05 +00:00
committed by Android (Google) Code Review

View File

@@ -20,6 +20,7 @@ import android.view.View;
import android.view.View.OnAttachStateChangeListener; import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnLayoutChangeListener; import android.view.View.OnLayoutChangeListener;
import android.widget.TextView; import android.widget.TextView;
import com.android.systemui.qs.PagedTileLayout.PageListener; import com.android.systemui.qs.PagedTileLayout.PageListener;
import com.android.systemui.qs.QSPanel.QSTileLayout; import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSTile.Host.Callback; import com.android.systemui.qs.QSTile.Host.Callback;
@@ -65,6 +66,7 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
private boolean mFullRows; private boolean mFullRows;
private int mNumQuickTiles; private int mNumQuickTiles;
private float mLastPosition; private float mLastPosition;
private QSTileHost mHost;
public QSAnimator(QSContainer container, QuickQSPanel quickPanel, QSPanel panel) { public QSAnimator(QSContainer container, QuickQSPanel quickPanel, QSPanel panel) {
mQsContainer = container; mQsContainer = container;
@@ -94,6 +96,7 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
} }
public void setHost(QSTileHost qsh) { public void setHost(QSTileHost qsh) {
mHost = qsh;
qsh.addCallback(this); qsh.addCallback(this);
updateAnimators(); updateAnimators();
} }
@@ -106,6 +109,9 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
@Override @Override
public void onViewDetachedFromWindow(View v) { public void onViewDetachedFromWindow(View v) {
if (mHost != null) {
mHost.removeCallback(this);
}
TunerService.get(mQsContainer.getContext()).removeTunable(this); TunerService.get(mQsContainer.getContext()).removeTunable(this);
} }