summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-04-16 22:36:51 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-04-16 22:36:54 +0000
commit2c1d9652fa51b6a3603e0c695c3c67c33c08607c (patch)
tree55d0ca40be6f7f9b0c54860db02925f39adac207
parent6041cc1a07511fe8fe913793b9743e32c9b507c6 (diff)
parent6035e0198ba510654b5d1f6b6a265a15b08576f8 (diff)
Merge "Return more information when getAppTasks#getTaskInfo is called."
-rw-r--r--api/current.txt3
-rw-r--r--api/system-current.txt3
-rw-r--r--core/java/android/app/ActivityManager.java23
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java21
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java7
5 files changed, 56 insertions, 1 deletions
diff --git a/api/current.txt b/api/current.txt
index 404941d8bdd2..0fea8b6c30da 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3636,12 +3636,15 @@ package android.app {
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
field public int affiliatedTaskId;
+ field public android.content.ComponentName baseActivity;
field public android.content.Intent baseIntent;
field public java.lang.CharSequence description;
field public int id;
+ field public int numActivities;
field public android.content.ComponentName origActivity;
field public int persistentId;
field public android.app.ActivityManager.TaskDescription taskDescription;
+ field public android.content.ComponentName topActivity;
}
public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
diff --git a/api/system-current.txt b/api/system-current.txt
index 1d1dcad9044c..4602f088fdde 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -3725,12 +3725,15 @@ package android.app {
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.ActivityManager.RecentTaskInfo> CREATOR;
field public int affiliatedTaskId;
+ field public android.content.ComponentName baseActivity;
field public android.content.Intent baseIntent;
field public java.lang.CharSequence description;
field public int id;
+ field public int numActivities;
field public android.content.ComponentName origActivity;
field public int persistentId;
field public android.app.ActivityManager.TaskDescription taskDescription;
+ field public android.content.ComponentName topActivity;
}
public static class ActivityManager.RunningAppProcessInfo implements android.os.Parcelable {
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 51ececcba7e9..134ecddb3b31 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -862,6 +862,23 @@ public class ActivityManager {
*/
public int affiliatedTaskColor;
+ /**
+ * The component launched as the first activity in the task.
+ * This can be considered the "application" of this task.
+ */
+ public ComponentName baseActivity;
+
+ /**
+ * The activity component at the top of the history stack of the task.
+ * This is what the user is currently doing.
+ */
+ public ComponentName topActivity;
+
+ /**
+ * Number of activities in this task.
+ */
+ public int numActivities;
+
public RecentTaskInfo() {
}
@@ -895,6 +912,9 @@ public class ActivityManager {
dest.writeLong(lastActiveTime);
dest.writeInt(affiliatedTaskId);
dest.writeInt(affiliatedTaskColor);
+ ComponentName.writeToParcel(baseActivity, dest);
+ ComponentName.writeToParcel(topActivity, dest);
+ dest.writeInt(numActivities);
}
public void readFromParcel(Parcel source) {
@@ -911,6 +931,9 @@ public class ActivityManager {
lastActiveTime = source.readLong();
affiliatedTaskId = source.readInt();
affiliatedTaskColor = source.readInt();
+ baseActivity = ComponentName.readFromParcel(source);
+ topActivity = ComponentName.readFromParcel(source);
+ numActivities = source.readInt();
}
public static final Creator<RecentTaskInfo> CREATOR
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index f25808baf6a0..b65893274c13 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -7851,6 +7851,27 @@ public final class ActivityManagerService extends ActivityManagerNative
rti.lastActiveTime = tr.lastActiveTime;
rti.affiliatedTaskId = tr.mAffiliatedTaskId;
rti.affiliatedTaskColor = tr.mAffiliatedTaskColor;
+ rti.numActivities = 0;
+
+ ActivityRecord base = null;
+ ActivityRecord top = null;
+ ActivityRecord tmp;
+
+ for (int i = tr.mActivities.size() - 1; i >= 0; --i) {
+ tmp = tr.mActivities.get(i);
+ if (tmp.finishing) {
+ continue;
+ }
+ base = tmp;
+ if (top == null || (top.state == ActivityState.INITIALIZING)) {
+ top = base;
+ }
+ rti.numActivities++;
+ }
+
+ rti.baseActivity = (base != null) ? base.intent.getComponent() : null;
+ rti.topActivity = (top != null) ? top.intent.getComponent() : null;
+
return rti;
}
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 162270c95687..5b1543e8ad30 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -4061,6 +4061,7 @@ final class ActivityStack {
}
ActivityRecord r = null;
ActivityRecord top = null;
+ ActivityRecord tmp;
int numActivities = 0;
int numRunning = 0;
final ArrayList<ActivityRecord> activities = task.mActivities;
@@ -4068,7 +4069,11 @@ final class ActivityStack {
continue;
}
for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) {
- r = activities.get(activityNdx);
+ tmp = activities.get(activityNdx);
+ if (tmp.finishing) {
+ continue;
+ }
+ r = tmp;
// Initialize state for next task if needed.
if (top == null || (top.state == ActivityState.INITIALIZING)) {