diff options
| author | Wale Ogunwale <ogunwale@google.com> | 2015-04-14 15:54:10 -0700 |
|---|---|---|
| committer | Wale Ogunwale <ogunwale@google.com> | 2015-04-16 11:14:46 -0700 |
| commit | 6035e0198ba510654b5d1f6b6a265a15b08576f8 (patch) | |
| tree | 53fda4160e34fda455589b132747bca1e5890a46 | |
| parent | 3f2631f526d0a0ac0b57ac9f6d241bcc7aeb5f5b (diff) | |
| download | frameworks_base-6035e0198ba510654b5d1f6b6a265a15b08576f8.zip frameworks_base-6035e0198ba510654b5d1f6b6a265a15b08576f8.tar.gz frameworks_base-6035e0198ba510654b5d1f6b6a265a15b08576f8.tar.bz2 | |
Return more information when getAppTasks#getTaskInfo is called.
The RecentTaskInfo object returned when getAppTasks#getTaskInfo
is called now contains baseActivity, topActivity, and numActivities.
Bug: 18723935
Change-Id: Ifc0cd68a57ed2c0823c23ac8d27e3b6ea6bc95e2
| -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 d73b9f9..f025506 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3633,12 +3633,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 f98e15f..47e6925 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3722,12 +3722,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 51ececc..134ecdd 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 f25808b..b658932 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 6210d60..fa22a30 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)) { |
