summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Olawale Ogunwale <ogunwale@google.com> 2015-04-07 12:45:34 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-04-07 12:45:38 +0000
commit8928c7271bee4b31e94b3d9e8e6e756d5aa2bcff (patch)
treef430f8edf0828b12f1c727f6b466d36161974fee
parent437db6106b20d5a81f12a93593b5f623b3159f19 (diff)
parentddc74155c9896b8783c1ba58499b909cce27a577 (diff)
Merge "[ActivityManager] Improve task order of getRunningTasks."
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 82c71e3aec37..daa38916e8fe 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -3900,16 +3900,18 @@ final class ActivityStack {
}
void getTasksLocked(List<RunningTaskInfo> list, int callingUid, boolean allowed) {
+ boolean focusedStack = mStackSupervisor.getFocusedStack() == this;
+ boolean topTask = true;
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
final TaskRecord task = mTaskHistory.get(taskNdx);
+ if (task.getTopActivity() == null) {
+ continue;
+ }
ActivityRecord r = null;
ActivityRecord top = null;
int numActivities = 0;
int numRunning = 0;
final ArrayList<ActivityRecord> activities = task.mActivities;
- if (activities.isEmpty()) {
- continue;
- }
if (!allowed && !task.isHomeTask() && task.effectiveUid != callingUid) {
continue;
}
@@ -3938,14 +3940,18 @@ final class ActivityStack {
ci.baseActivity = r.intent.getComponent();
ci.topActivity = top.intent.getComponent();
ci.lastActiveTime = task.lastActiveTime;
+ if (focusedStack && topTask) {
+ // Give the latest time to ensure foreground task can be sorted
+ // at the first, because lastActiveTime of creating task is 0.
+ ci.lastActiveTime = System.currentTimeMillis();
+ topTask = false;
+ }
if (top.task != null) {
ci.description = top.task.lastDescription;
}
ci.numActivities = numActivities;
ci.numRunning = numRunning;
- //System.out.println(
- // "#" + maxNum + ": " + " descr=" + ci.description);
list.add(ci);
}
}