diff options
| author | 2015-04-16 22:36:51 +0000 | |
|---|---|---|
| committer | 2015-04-16 22:36:54 +0000 | |
| commit | 2c1d9652fa51b6a3603e0c695c3c67c33c08607c (patch) | |
| tree | 55d0ca40be6f7f9b0c54860db02925f39adac207 | |
| parent | 6041cc1a07511fe8fe913793b9743e32c9b507c6 (diff) | |
| parent | 6035e0198ba510654b5d1f6b6a265a15b08576f8 (diff) | |
Merge "Return more information when getAppTasks#getTaskInfo is called."
| -rw-r--r-- | api/current.txt | 3 | ||||
| -rw-r--r-- | api/system-current.txt | 3 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 23 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 21 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 7 |
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)) { |