diff options
author | Winson Chung <winsonc@google.com> | 2014-05-02 09:56:12 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2014-05-02 17:34:37 -0700 |
commit | 03a9baedc9b933bb6a550c0cb84649b1b45b872c (patch) | |
tree | 19f7ae956d57e540859663598a7e9d77d6319b93 /services | |
parent | 9dfcbb840380744a051bdc4921af3127f30a2af1 (diff) | |
download | frameworks_base-03a9baedc9b933bb6a550c0cb84649b1b45b872c.zip frameworks_base-03a9baedc9b933bb6a550c0cb84649b1b45b872c.tar.gz frameworks_base-03a9baedc9b933bb6a550c0cb84649b1b45b872c.tar.bz2 |
Refactoring activity method to update recents values.
Change-Id: Ic525be207714d34abe0c2d26091c3e46abcd9bad
Diffstat (limited to 'services')
3 files changed, 37 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index bcc6359..f908de2 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -7070,8 +7070,7 @@ public final class ActivityManagerService extends ActivityManagerNative final ArrayList<ActivityRecord> activities = tr.mActivities; int activityNdx; final int numActivities = activities.size(); - for (activityNdx = Math.min(numActivities, 1); activityNdx < numActivities; - ++activityNdx) { + for (activityNdx = 0; activityNdx < numActivities; ++activityNdx) { final ActivityRecord r = activities.get(activityNdx); if (r.intent != null && (r.intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) @@ -7079,14 +7078,34 @@ public final class ActivityManagerService extends ActivityManagerNative break; } } - // Traverse downwards starting below break looking for set label and icon. - for (--activityNdx; activityNdx >= 0; --activityNdx) { - final ActivityRecord r = activities.get(activityNdx); - if (r.activityLabel != null || r.activityIcon != null) { - rti.activityLabel = r.activityLabel; - rti.activityIcon = r.activityIcon; - break; + if (activityNdx > 0) { + // Traverse downwards starting below break looking for set label, icon. + // Note that if there are activities in the task but none of them set the + // recent activity values, then we do not fall back to the last set + // values in the TaskRecord. + rti.activityValues = new ActivityManager.RecentsActivityValues(); + for (--activityNdx; activityNdx >= 0; --activityNdx) { + final ActivityRecord r = activities.get(activityNdx); + if (r.activityValues != null) { + if (rti.activityValues.label == null) { + rti.activityValues.label = r.activityValues.label; + tr.lastActivityValues.label = r.activityValues.label; + } + if (rti.activityValues.icon == null) { + rti.activityValues.icon = r.activityValues.icon; + tr.lastActivityValues.icon = r.activityValues.icon; + } + if (rti.activityValues.colorPrimary == 0) { + rti.activityValues.colorPrimary = r.activityValues.colorPrimary; + tr.lastActivityValues.colorPrimary = r.activityValues.colorPrimary; + } + } } + } else { + // If there are no activity records in this task, then we use the last + // resolved values + rti.activityValues = + new ActivityManager.RecentsActivityValues(tr.lastActivityValues); } if ((flags&ActivityManager.RECENT_IGNORE_UNAVAILABLE) != 0) { @@ -7154,13 +7173,11 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override - public void setActivityLabelAndIcon(IBinder token, CharSequence activityLabel, - Bitmap activityIcon) { + public void setRecentsActivityValues(IBinder token, ActivityManager.RecentsActivityValues rav) { synchronized (this) { ActivityRecord r = ActivityRecord.isInStackLocked(token); if (r != null) { - r.activityLabel = activityLabel.toString(); - r.activityIcon = activityIcon; + r.activityValues = rav; } } } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 7a08cdd..f506eab 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -23,6 +23,7 @@ import com.android.server.AttributeCache; import com.android.server.am.ActivityStack.ActivityState; import com.android.server.am.ActivityStackSupervisor.ActivityContainer; +import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.ResultInfo; import android.content.ComponentName; @@ -147,8 +148,7 @@ final class ActivityRecord { boolean mStartingWindowShown = false; ActivityContainer mInitialActivityContainer; - String activityLabel; - Bitmap activityIcon; + ActivityManager.RecentsActivityValues activityValues; // the recents information for this activity void dump(PrintWriter pw, String prefix) { final long now = SystemClock.uptimeMillis(); diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index f4dd15e..9f0bc10 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -56,6 +56,11 @@ final class TaskRecord extends ThumbnailHolder { int numFullscreen; // Number of fullscreen activities. + // This represents the last resolved activity values for this task + // NOTE: This value needs to be persisted with each task + ActivityManager.RecentsActivityValues lastActivityValues = + new ActivityManager.RecentsActivityValues(); + /** List of all activities in the task arranged in history order */ final ArrayList<ActivityRecord> mActivities = new ArrayList<ActivityRecord>(); |