Merge "Fix leak in NotificationStackScroller by nulling out translatingParent"

This commit is contained in:
TreeHugger Robot
2017-02-17 23:29:06 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 15 deletions

View File

@@ -1684,6 +1684,7 @@ public class StatusBar extends SystemUI implements DemoMode,
if (entry != null && entry.row != null) {
entry.row.setRemoved();
mStackScroller.cleanUpViewState(entry.row);
}
// Let's remove the children if this was a summary
handleGroupSummaryRemoved(key, ranking);
@@ -1740,12 +1741,6 @@ public class StatusBar extends SystemUI implements DemoMode,
// animations
toRemove.get(i).setRemoved();
}
for (int i = 0; i < toRemove.size(); i++) {
removeNotification(toRemove.get(i).getStatusBarNotification().getKey(), ranking);
// we need to ensure that the view is actually properly removed from the viewstate
// as this won't happen anymore when kept in the parent.
mStackScroller.removeViewStateForView(toRemove.get(i));
}
}
}

View File

@@ -2473,6 +2473,17 @@ public class NotificationStackScrollLayout extends ViewGroup
}
}
/**
* Called when a notification is removed from the shade. This cleans up the state for a given
* view.
*/
public void cleanUpViewState(View child) {
if (child == mTranslatingParentView) {
mTranslatingParentView = null;
}
mCurrentStackScrollState.removeViewStateForView(child);
}
@Override
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
super.requestDisallowInterceptTouchEvent(disallowIntercept);
@@ -4070,15 +4081,6 @@ public class NotificationStackScrollLayout extends ViewGroup
setFadingOut(alpha != 1.0f);
}
/**
* Remove the a given view from the viewstate. This is currently used when the children are
* kept in the parent artificially to have a nicer animation.
* @param view the view to remove
*/
public void removeViewStateForView(View view) {
mCurrentStackScrollState.removeViewStateForView(view);
}
public void setQsExpanded(boolean qsExpanded) {
mQsExpanded = qsExpanded;
updateAlgorithmLayoutMinHeight();