diff options
| author | 2019-03-25 03:43:22 +0000 | |
|---|---|---|
| committer | 2019-03-25 03:43:22 +0000 | |
| commit | 98b50b348ecc6b64f9275843bb482d76b6be11ee (patch) | |
| tree | fff35b0a3885009620bd0e36a429b7d6b8e89089 | |
| parent | 516d750ae20bc420583bba71d76319d616c664a5 (diff) | |
| parent | a59937a8e0f4417650aa790c089973be626f6249 (diff) | |
Merge "Make sure to report wait result when clean up activities"
3 files changed, 10 insertions, 16 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index d1faa7180884..5bbabfceda47 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -2160,8 +2160,7 @@ final class ActivityRecord extends ConfigurationContainer { } if (nowVisible) { - // We won't get a call to reportActivityVisibleLocked() so dismiss lockscreen now. - mStackSupervisor.reportActivityVisibleLocked(this); + mStackSupervisor.stopWaitingForActivityVisible(this); } // Schedule an idle timeout in case the app doesn't do it for us. @@ -2350,7 +2349,7 @@ final class ActivityRecord extends ConfigurationContainer { final @LaunchState int launchState = info != null ? info.getLaunchState() : -1; mStackSupervisor.reportActivityLaunchedLocked(false /* timeout */, this, windowsDrawnDelayMs, launchState); - mStackSupervisor.sendWaitingVisibleReportLocked(this); + mStackSupervisor.stopWaitingForActivityVisible(this); finishLaunchTickingLocked(); if (task != null) { task.hasBeenVisible = true; @@ -2361,7 +2360,7 @@ final class ActivityRecord extends ConfigurationContainer { /** Called when the windows associated app window container are visible. */ public void onWindowsVisible() { synchronized (mAtmService.mGlobalLock) { - mStackSupervisor.reportActivityVisibleLocked(this); + mStackSupervisor.stopWaitingForActivityVisible(this); if (DEBUG_SWITCH) Log.v(TAG_SWITCH, "windowsVisibleLocked(): " + this); if (!nowVisible) { nowVisible = true; diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java index d7c9bc78e72f..53dc1df5a46a 100644 --- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java @@ -553,18 +553,10 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks { // down to the max limit while they are still waiting to finish. mFinishingActivities.remove(r); - for (int i = mWaitingForActivityVisible.size() - 1; i >= 0; --i) { - if (mWaitingForActivityVisible.get(i).matches(r.mActivityComponent)) { - mWaitingForActivityVisible.remove(i); - } - } - } - - void reportActivityVisibleLocked(ActivityRecord r) { - sendWaitingVisibleReportLocked(r); + stopWaitingForActivityVisible(r); } - void sendWaitingVisibleReportLocked(ActivityRecord r) { + void stopWaitingForActivityVisible(ActivityRecord r) { boolean changed = false; for (int i = mWaitingForActivityVisible.size() - 1; i >= 0; --i) { final WaitInfo w = mWaitingForActivityVisible.get(i); diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 2b23ff084391..3acd4e7fc746 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1538,10 +1538,13 @@ class ActivityStarter { if (!mAddingToTask && mReuseTask == null) { // We didn't do anything... but it was needed (a.k.a., client don't use that // intent!) And for paranoia, make sure we have correctly resumed the top activity. - resumeTargetStackIfNeeded(); if (outActivity != null && outActivity.length > 0) { - outActivity[0] = reusedActivity; + // The reusedActivity could be finishing, for example of starting an + // activity with FLAG_ACTIVITY_CLEAR_TOP flag. In that case, return the + // top running activity in the task instead. + outActivity[0] = reusedActivity.finishing + ? reusedActivity.getTaskRecord().getTopActivity() : reusedActivity; } return mMovedToFront ? START_TASK_TO_FRONT : START_DELIVERED_TO_TOP; |