Make sure to cleanup views that couldn't be added
ie: due to BadTokenException or InvalidDisplayException Previously, only views that were already in the viewhierarchy before attempted to be re-added would be removed. This makes sure if the view was newly added, it'll also be removed. This prevents a memory leak of views. Test: manually show and cancel multiple toasts, check the hierachy viewer that no Toast views remain Fixes: 234694098 Change-Id: I06bbae70c277d0615753edc9ec0a8e7439ad7020
This commit is contained in:
@@ -404,9 +404,10 @@ public final class WindowManagerGlobal {
|
||||
try {
|
||||
root.setView(view, wparams, panelParentView, userId);
|
||||
} catch (RuntimeException e) {
|
||||
final int viewIndex = findViewLocked(view, false);
|
||||
// BadTokenException or InvalidDisplayException, clean up.
|
||||
if (index >= 0) {
|
||||
removeViewLocked(index, true);
|
||||
if (viewIndex >= 0) {
|
||||
removeViewLocked(viewIndex, true);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user