Merge "Fixing transition from tasks excluded from Recents into Recents."
This commit is contained in:
@@ -44,6 +44,7 @@ import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import com.android.systemui.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -240,12 +241,10 @@ public class AlternateRecentsComponent {
|
||||
}
|
||||
|
||||
/** Returns whether there is are multiple recents tasks */
|
||||
boolean hasMultipleRecentsTask() {
|
||||
boolean hasMultipleRecentsTask(List<ActivityManager.RecentTaskInfo> tasks) {
|
||||
// NOTE: Currently there's no method to get the number of non-home tasks, so we have to
|
||||
// compute this ourselves
|
||||
SystemServicesProxy ssp = mSystemServicesProxy;
|
||||
List<ActivityManager.RecentTaskInfo> tasks = ssp.getRecentTasks(4,
|
||||
UserHandle.CURRENT.getIdentifier());
|
||||
Iterator<ActivityManager.RecentTaskInfo> iter = tasks.iterator();
|
||||
while (iter.hasNext()) {
|
||||
ActivityManager.RecentTaskInfo t = iter.next();
|
||||
@@ -259,6 +258,17 @@ public class AlternateRecentsComponent {
|
||||
return (tasks.size() > 1);
|
||||
}
|
||||
|
||||
/** Returns whether the base intent of the top task stack was launched with the flag
|
||||
* Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS. */
|
||||
boolean isTopTaskExcludeFromRecents(List<ActivityManager.RecentTaskInfo> tasks) {
|
||||
if (tasks.size() > 0) {
|
||||
ActivityManager.RecentTaskInfo t = tasks.get(0);
|
||||
Console.log(t.baseIntent.toString());
|
||||
return (t.baseIntent.getFlags() & Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Converts from the device rotation to the degree */
|
||||
float getDegreesForRotation(int value) {
|
||||
switch (value) {
|
||||
@@ -334,10 +344,18 @@ public class AlternateRecentsComponent {
|
||||
isTopTaskHome = ssp.isInHomeStack(topTask.id);
|
||||
}
|
||||
|
||||
// Otherwise, Recents is not the front-most activity and we should animate into it
|
||||
boolean hasMultipleTasks = hasMultipleRecentsTask();
|
||||
// Otherwise, Recents is not the front-most activity and we should animate into it. If
|
||||
// the activity at the root of the top task stack is excluded from recents, or if that
|
||||
// task stack is in the home stack, then we just do a simple transition. Otherwise, we
|
||||
// animate to the rects defined by the Recents service, which can differ depending on the
|
||||
// number of items in the list.
|
||||
List<ActivityManager.RecentTaskInfo> recentTasks =
|
||||
ssp.getRecentTasks(4, UserHandle.CURRENT.getIdentifier());
|
||||
boolean hasMultipleTasks = hasMultipleRecentsTask(recentTasks);
|
||||
boolean isTaskExcludedFromRecents = isTopTaskExcludeFromRecents(recentTasks);
|
||||
Rect taskRect = hasMultipleTasks ? mMultipleCountFirstTaskRect : mSingleCountFirstTaskRect;
|
||||
if (!isTopTaskHome && taskRect != null && taskRect.width() > 0 && taskRect.height() > 0) {
|
||||
if (!isTopTaskHome && !isTaskExcludedFromRecents &&
|
||||
(taskRect != null) && (taskRect.width() > 0) && (taskRect.height() > 0)) {
|
||||
// Loading from thumbnail
|
||||
Bitmap thumbnail;
|
||||
Bitmap firstThumbnail = loadFirstTaskThumbnail();
|
||||
|
||||
@@ -326,7 +326,6 @@ public class RecentsView extends FrameLayout implements TaskStackView.TaskStackV
|
||||
b, offsetX, offsetY);
|
||||
}
|
||||
|
||||
|
||||
if (task.isActive) {
|
||||
// Bring an active task to the foreground
|
||||
RecentsTaskLoader.getInstance().getSystemServicesProxy()
|
||||
|
||||
Reference in New Issue
Block a user