summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecsFuture.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java6
4 files changed, 19 insertions, 1 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecsFuture.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecsFuture.java
index 85d362a7a767..c227feec75b6 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecsFuture.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecsFuture.java
@@ -49,6 +49,10 @@ public abstract class AppTransitionAnimationSpecsFuture {
mHandler.post(mComposeTask);
}
List<AppTransitionAnimationSpecCompat> specs = mComposeTask.get();
+ // Clear reference to the compose task this future holds onto the reference to it's
+ // implementation (which can leak references to the bitmap it creates for the
+ // transition)
+ mComposeTask = null;
if (specs == null) {
return null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index ac26f68bacf7..19da3dba17e8 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -276,6 +276,9 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
}
};
+ // Used to reset the dummy stack view
+ private final TaskStack mEmptyTaskStack = new TaskStack();
+
public RecentsImpl(Context context) {
mContext = context;
mHandler = new Handler();
@@ -1108,6 +1111,10 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
}
});
EventBus.getDefault().send(hideMenuEvent);
+
+ // Once we have launched the activity, reset the dummy stack view tasks so we don't hold
+ // onto references to the same tasks consumed by the activity
+ mDummyStackView.setTasks(mEmptyTaskStack, false /* notifyStackChanges */);
}
/**** OnAnimationFinishedListener Implementation ****/
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
index c348187115f0..75bc95588244 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
@@ -96,6 +96,9 @@ public class RecentsOnboarding {
public void onTaskStackChanged() {
ActivityManager.RunningTaskInfo info = ActivityManagerWrapper.getInstance()
.getRunningTask(ACTIVITY_TYPE_UNDEFINED /* ignoreActivityType */);
+ if (info == null) {
+ return;
+ }
if (mBlacklistedPackages.contains(info.baseActivity.getPackageName())) {
hide(true);
return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
index cd000fe4ba70..a0df558a44d8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
@@ -73,6 +73,7 @@ public class NavigationBarGestureHelper implements TunerService.Tunable, Gesture
private int mTouchDownY;
private boolean mDownOnRecents;
private VelocityTracker mVelocityTracker;
+ private boolean mIsInScreenPinning;
private boolean mDockWindowEnabled;
private boolean mDockWindowTouchSlopExceeded;
@@ -105,6 +106,9 @@ public class NavigationBarGestureHelper implements TunerService.Tunable, Gesture
}
public boolean onInterceptTouchEvent(MotionEvent event) {
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ mIsInScreenPinning = mNavigationBarView.inScreenPinning();
+ }
if (!canHandleGestures()) {
return false;
}
@@ -269,7 +273,7 @@ public class NavigationBarGestureHelper implements TunerService.Tunable, Gesture
}
private boolean canHandleGestures() {
- return !mNavigationBarView.inScreenPinning() && !mStatusBar.isKeyguardShowing()
+ return !mIsInScreenPinning && !mStatusBar.isKeyguardShowing()
&& mStatusBar.isPresenterFullyCollapsed();
}