diff options
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java | 13 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java | 9 |
2 files changed, 19 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java index 09a6ccc..3e6611a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java +++ b/packages/SystemUI/src/com/android/systemui/recents/AlternateRecentsComponent.java @@ -111,14 +111,23 @@ public class AlternateRecentsComponent implements ActivityOptions.OnAnimationSta public void run() { RecentsConfiguration config = RecentsConfiguration.getInstance(); if (config.svelteLevel == RecentsConfiguration.SVELTE_NONE) { + ActivityManager.RunningTaskInfo runningTaskInfo = getTopMostTask(); + // Load the next task only if we aren't svelte RecentsTaskLoader loader = RecentsTaskLoader.getInstance(); RecentsTaskLoadPlan plan = loader.createLoadPlan(mContext); loader.preloadTasks(plan, true /* isTopTaskHome */); RecentsTaskLoadPlan.Options launchOpts = new RecentsTaskLoadPlan.Options(); - launchOpts.numVisibleTasks = 1; - launchOpts.numVisibleTaskThumbnails = 1; + // This callback is made when a new activity is launched and the old one is paused + // so ignore the current activity and try and preload the thumbnail for the + // previous one. + if (runningTaskInfo != null) { + launchOpts.runningTaskId = runningTaskInfo.id; + } + launchOpts.numVisibleTasks = 2; + launchOpts.numVisibleTaskThumbnails = 2; launchOpts.onlyLoadForCache = true; + launchOpts.onlyLoadPausedActivities = true; loader.loadTasks(mContext, plan, launchOpts); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java index 0011811..0e1c01a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java +++ b/packages/SystemUI/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java @@ -50,6 +50,7 @@ public class RecentsTaskLoadPlan { public boolean loadIcons = true; public boolean loadThumbnails = true; public boolean onlyLoadForCache = false; + public boolean onlyLoadPausedActivities = false; public int numVisibleTasks = 0; public int numVisibleTaskThumbnails = 0; } @@ -141,6 +142,7 @@ public class RecentsTaskLoadPlan { activityColor, (i == (taskCount - 1)), mConfig.lockToAppEnabled, icon, iconFilename); task.thumbnail = loader.getAndUpdateThumbnail(taskKey, mSystemServicesProxy, false); + if (DEBUG) Log.d(TAG, "\tthumbnail: " + taskKey + ", " + task.thumbnail); loadedTasks.add(task); } mStack.setTasks(loadedTasks); @@ -186,6 +188,11 @@ public class RecentsTaskLoadPlan { boolean isVisibleTask = i >= (taskCount - opts.numVisibleTasks); boolean isVisibleThumbnail = i >= (taskCount - opts.numVisibleTaskThumbnails); + // If requested, skip the running task + if (opts.onlyLoadPausedActivities && isRunningTask) { + continue; + } + if (opts.loadIcons && (isRunningTask || isVisibleTask)) { if (task.activityIcon == null) { if (DEBUG) Log.d(TAG, "\tLoading icon: " + taskKey); @@ -194,7 +201,7 @@ public class RecentsTaskLoadPlan { } } if (opts.loadThumbnails && (isRunningTask || isVisibleThumbnail)) { - if (task.thumbnail == null) { + if (task.thumbnail == null || isRunningTask) { if (DEBUG) Log.d(TAG, "\tLoading thumbnail: " + taskKey); if (mConfig.svelteLevel <= RecentsConfiguration.SVELTE_LIMIT_CACHE) { task.thumbnail = loader.getAndUpdateThumbnail(taskKey, mSystemServicesProxy, |