diff options
| author | 2018-03-20 00:16:57 +0000 | |
|---|---|---|
| committer | 2018-03-20 00:16:57 +0000 | |
| commit | 4cda02f25f87f6163fdd873a727dad02687d6e7b (patch) | |
| tree | 7276f2d700a35b7729a64665b52de1fa28664fd4 | |
| parent | 8ada330da76d62e29ef193d0e7218b85bd1d4c0b (diff) | |
| parent | 4a088432b6026735dbe8ebf8f204229496f09f0f (diff) | |
Merge changes I0c466350,I09a9cd43,I8b2a0819 into pi-dev
* changes:
Reset dummy stack view tasks after computing transition into Recents
Don't update onboarding if there is no valid running task.
Only check screen pinning state on touch down.
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(); } |