Don't assume there will be a running task
- During tests, if apps and launcher are killed, then there may be no
running task
Change-Id: Iaef1c4ad0b31cec3c8da7d868e3e7b49d3b09faa
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 5b488ca..f8f0905 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -227,7 +227,7 @@
public RecentsActivityCommand() {
mHelper = getActivityControlHelper();
mCreateTime = SystemClock.elapsedRealtime();
- mRunningTaskId = mAM.getRunningTask().id;
+ mRunningTaskId = RecentsModel.getRunningTaskId();
// Preload the plan
mRecentsModel.getTasks(null);
diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java
index a9ce5cc..e184a9b 100644
--- a/quickstep/src/com/android/quickstep/RecentsModel.java
+++ b/quickstep/src/com/android/quickstep/RecentsModel.java
@@ -18,6 +18,7 @@
import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
import android.annotation.TargetApi;
+import android.app.ActivityManager;
import android.content.ComponentCallbacks2;
import android.content.Context;
import android.os.Build;
@@ -95,6 +96,15 @@
}
/**
+ * @return The task id of the running task, or -1 if there is no current running task.
+ */
+ public static int getRunningTaskId() {
+ ActivityManager.RunningTaskInfo runningTask =
+ ActivityManagerWrapper.getInstance().getRunningTask();
+ return runningTask != null ? runningTask.id : -1;
+ }
+
+ /**
* @return Whether the provided {@param changeId} is the latest recent tasks list id.
*/
public boolean isTaskListValid(int changeId) {
@@ -134,7 +144,7 @@
// Keep the cache up to date with the latest thumbnails
mTaskList.getTasks(mThumbnailCache.getCacheSize(), true /* keysOnly */, (tasks) -> {
- int runningTaskId = ActivityManagerWrapper.getInstance().getRunningTask().id;
+ int runningTaskId = RecentsModel.getRunningTaskId();
for (Task task : tasks) {
if (task.key.id == runningTaskId) {
// Skip the running task, it's not going to have an up-to-date snapshot by the