Merge "[ActivityManager] Improve task order of getRunningTasks."
This commit is contained in:
@@ -3900,16 +3900,18 @@ final class ActivityStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void getTasksLocked(List<RunningTaskInfo> list, int callingUid, boolean allowed) {
|
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) {
|
for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) {
|
||||||
final TaskRecord task = mTaskHistory.get(taskNdx);
|
final TaskRecord task = mTaskHistory.get(taskNdx);
|
||||||
|
if (task.getTopActivity() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ActivityRecord r = null;
|
ActivityRecord r = null;
|
||||||
ActivityRecord top = null;
|
ActivityRecord top = null;
|
||||||
int numActivities = 0;
|
int numActivities = 0;
|
||||||
int numRunning = 0;
|
int numRunning = 0;
|
||||||
final ArrayList<ActivityRecord> activities = task.mActivities;
|
final ArrayList<ActivityRecord> activities = task.mActivities;
|
||||||
if (activities.isEmpty()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (!allowed && !task.isHomeTask() && task.effectiveUid != callingUid) {
|
if (!allowed && !task.isHomeTask() && task.effectiveUid != callingUid) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -3938,14 +3940,18 @@ final class ActivityStack {
|
|||||||
ci.baseActivity = r.intent.getComponent();
|
ci.baseActivity = r.intent.getComponent();
|
||||||
ci.topActivity = top.intent.getComponent();
|
ci.topActivity = top.intent.getComponent();
|
||||||
ci.lastActiveTime = task.lastActiveTime;
|
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) {
|
if (top.task != null) {
|
||||||
ci.description = top.task.lastDescription;
|
ci.description = top.task.lastDescription;
|
||||||
}
|
}
|
||||||
ci.numActivities = numActivities;
|
ci.numActivities = numActivities;
|
||||||
ci.numRunning = numRunning;
|
ci.numRunning = numRunning;
|
||||||
//System.out.println(
|
|
||||||
// "#" + maxNum + ": " + " descr=" + ci.description);
|
|
||||||
list.add(ci);
|
list.add(ci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user