@@ -1203,8 +1203,7 @@ private final void completeResumeLocked(ActivityRecord next) {
12031203 if (mMainStack ) {
12041204 mService .reportResumedActivityLocked (next );
12051205 }
1206-
1207- next .clearThumbnail ();
1206+
12081207 if (mMainStack ) {
12091208 mService .setFocusedActivityLocked (next );
12101209 }
@@ -4328,18 +4327,33 @@ final boolean moveTaskToBackLocked(int task, ActivityRecord reason) {
43284327 finishTaskMoveLocked (task );
43294328 return true ;
43304329 }
4331-
4330+
43324331 public ActivityManager .TaskThumbnails getTaskThumbnailsLocked (TaskRecord tr ) {
43334332 TaskAccessInfo info = getTaskAccessInfoLocked (tr .taskId , true );
43344333 ActivityRecord resumed = mResumedActivity ;
43354334 if (resumed != null && resumed .thumbHolder == tr ) {
43364335 info .mainThumbnail = resumed .stack .screenshotActivities (resumed );
4337- } else {
4338- info .mainThumbnail = tr .lastThumbnail ;
43394336 }
43404337 return info ;
43414338 }
43424339
4340+ public Bitmap getTaskTopThumbnailLocked (TaskRecord tr ) {
4341+ ActivityRecord resumed = mResumedActivity ;
4342+ if (resumed != null && resumed .task == tr ) {
4343+ // This task is the current resumed task, we just need to take
4344+ // a screenshot of it and return that.
4345+ return resumed .stack .screenshotActivities (resumed );
4346+ }
4347+ // Return the information about the task, to figure out the top
4348+ // thumbnail to return.
4349+ TaskAccessInfo info = getTaskAccessInfoLocked (tr .taskId , true );
4350+ if (info .numSubThumbbails <= 0 ) {
4351+ return info .mainThumbnail ;
4352+ } else {
4353+ return info .subtasks .get (info .numSubThumbbails -1 ).holder .lastThumbnail ;
4354+ }
4355+ }
4356+
43434357 public ActivityRecord removeTaskActivitiesLocked (int taskId , int subTaskIndex ,
43444358 boolean taskRequired ) {
43454359 TaskAccessInfo info = getTaskAccessInfoLocked (taskId , false );
@@ -4370,7 +4384,6 @@ public ActivityRecord removeTaskActivitiesLocked(int taskId, int subTaskIndex,
43704384 }
43714385
43724386 public TaskAccessInfo getTaskAccessInfoLocked (int taskId , boolean inclThumbs ) {
4373- ActivityRecord resumed = mResumedActivity ;
43744387 final TaskAccessInfo thumbs = new TaskAccessInfo ();
43754388 // How many different sub-thumbnails?
43764389 final int NA = mHistory .size ();
@@ -4380,6 +4393,10 @@ public TaskAccessInfo getTaskAccessInfoLocked(int taskId, boolean inclThumbs) {
43804393 ActivityRecord ar = mHistory .get (j );
43814394 if (!ar .finishing && ar .task .taskId == taskId ) {
43824395 holder = ar .thumbHolder ;
4396+ if (holder != null ) {
4397+ thumbs .mainThumbnail = holder .lastThumbnail ;
4398+ }
4399+ j ++;
43834400 break ;
43844401 }
43854402 j ++;
@@ -4394,7 +4411,6 @@ public TaskAccessInfo getTaskAccessInfoLocked(int taskId, boolean inclThumbs) {
43944411
43954412 ArrayList <TaskAccessInfo .SubTask > subtasks = new ArrayList <TaskAccessInfo .SubTask >();
43964413 thumbs .subtasks = subtasks ;
4397- ActivityRecord lastActivity = null ;
43984414 while (j < NA ) {
43994415 ActivityRecord ar = mHistory .get (j );
44004416 j ++;
@@ -4404,30 +4420,28 @@ public TaskAccessInfo getTaskAccessInfoLocked(int taskId, boolean inclThumbs) {
44044420 if (ar .task .taskId != taskId ) {
44054421 break ;
44064422 }
4407- lastActivity = ar ;
44084423 if (ar .thumbHolder != holder && holder != null ) {
44094424 thumbs .numSubThumbbails ++;
44104425 holder = ar .thumbHolder ;
44114426 TaskAccessInfo .SubTask sub = new TaskAccessInfo .SubTask ();
4412- sub .thumbnail = holder . lastThumbnail ;
4427+ sub .holder = holder ;
44134428 sub .activity = ar ;
44144429 sub .index = j -1 ;
44154430 subtasks .add (sub );
44164431 }
44174432 }
4418- if (lastActivity != null && subtasks .size () > 0 ) {
4419- if (resumed == lastActivity ) {
4420- TaskAccessInfo .SubTask sub = subtasks .get (subtasks .size ()-1 );
4421- sub .thumbnail = lastActivity .stack .screenshotActivities (lastActivity );
4422- }
4423- }
44244433 if (thumbs .numSubThumbbails > 0 ) {
44254434 thumbs .retriever = new IThumbnailRetriever .Stub () {
44264435 public Bitmap getThumbnail (int index ) {
44274436 if (index < 0 || index >= thumbs .subtasks .size ()) {
44284437 return null ;
44294438 }
4430- return thumbs .subtasks .get (index ).thumbnail ;
4439+ TaskAccessInfo .SubTask sub = thumbs .subtasks .get (index );
4440+ ActivityRecord resumed = mResumedActivity ;
4441+ if (resumed != null && resumed .thumbHolder == sub .holder ) {
4442+ return resumed .stack .screenshotActivities (resumed );
4443+ }
4444+ return sub .holder .lastThumbnail ;
44314445 }
44324446 };
44334447 }
0 commit comments