Fixing crash in SysUI due to invalid group.

- Adding a null check for tasks that have already been removed, but may
  be launched.

Bug: 28890599
Change-Id: Idde322c737a5543e639e693fbe7615e720a12c1e
This commit is contained in:
Winson
2016-05-26 10:46:11 -07:00
committed by Winson Chung
parent a39d888651
commit 8a3ef375ee
2 changed files with 13 additions and 12 deletions

View File

@@ -35,7 +35,7 @@ public class RecentsDebugFlags implements TunerService.Tunable {
public static final boolean DisableBackgroundCache = false;
// Enables the task affiliations
public static final boolean EnableAffiliatedTaskGroups = false;
// TODO: To be repurposed
// Enables the button above the stack
public static final boolean EnableStackActionButton = true;
// Overrides the Tuner flags and enables the timeout
private static final boolean EnableFastToggleTimeout = false;

View File

@@ -148,10 +148,12 @@ public class TaskStackAnimationHelper {
for (int i = taskViews.size() - 1; i >= 0; i--) {
TaskView tv = taskViews.get(i);
Task task = tv.getTask();
boolean currentTaskOccludesLaunchTarget = (launchTargetTask != null &&
launchTargetTask.group.isTaskAboveTask(task, launchTargetTask));
boolean hideTask = (launchTargetTask != null &&
launchTargetTask.isFreeformTask() && task.isFreeformTask());
boolean currentTaskOccludesLaunchTarget = launchTargetTask != null &&
launchTargetTask.group != null &&
launchTargetTask.group.isTaskAboveTask(task, launchTargetTask);
boolean hideTask = launchTargetTask != null &&
launchTargetTask.isFreeformTask() &&
task.isFreeformTask();
// Get the current transform for the task, which will be used to position it offscreen
stackLayout.getStackTransform(task, stackScroller.getStackScroll(), mTmpTransform,
@@ -221,11 +223,9 @@ public class TaskStackAnimationHelper {
int taskIndexFromBack = i;
final TaskView tv = taskViews.get(i);
Task task = tv.getTask();
boolean currentTaskOccludesLaunchTarget = false;
if (launchTargetTask != null) {
currentTaskOccludesLaunchTarget = launchTargetTask.group.isTaskAboveTask(task,
launchTargetTask);
}
boolean currentTaskOccludesLaunchTarget = launchTargetTask != null &&
launchTargetTask.group != null &&
launchTargetTask.group.isTaskAboveTask(task, launchTargetTask);
// Get the current transform for the task, which will be updated to the final transform
// to animate to depending on how recents was invoked
@@ -358,8 +358,9 @@ public class TaskStackAnimationHelper {
for (int i = 0; i < taskViewCount; i++) {
TaskView tv = taskViews.get(i);
Task task = tv.getTask();
boolean currentTaskOccludesLaunchTarget = (launchingTask != null &&
launchingTask.group.isTaskAboveTask(task, launchingTask));
boolean currentTaskOccludesLaunchTarget = launchingTask != null &&
launchingTask.group != null &&
launchingTask.group.isTaskAboveTask(task, launchingTask);
if (tv == launchingTaskView) {
tv.setClipViewInStack(false);