Merge "Removing extra binder call on state or visibility change" into ub-launcher3-edmonton
diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java
index 7676a70..9c2c8b3 100644
--- a/quickstep/src/com/android/quickstep/RecentsModel.java
+++ b/quickstep/src/com/android/quickstep/RecentsModel.java
@@ -15,6 +15,8 @@
*/
package com.android.quickstep;
+import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
+
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.ComponentCallbacks2;
@@ -190,7 +192,7 @@
@Override
public void onTaskStackChangedBackground() {
int userId = UserHandle.myUserId();
- if (!mPreloadTasksInBackground || !checkCurrentUserId(userId, false /* debug */)) {
+ if (!mPreloadTasksInBackground || !checkCurrentOrManagedUserId(userId, mContext)) {
// TODO: Only register this for the current user
return;
}
diff --git a/quickstep/src/com/android/quickstep/TaskUtils.java b/quickstep/src/com/android/quickstep/TaskUtils.java
index f9628d7..d7fad43 100644
--- a/quickstep/src/com/android/quickstep/TaskUtils.java
+++ b/quickstep/src/com/android/quickstep/TaskUtils.java
@@ -47,6 +47,8 @@
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
+import java.util.List;
+
/**
* Contains helpful methods for retrieving data from {@link Task}s.
*/
@@ -207,4 +209,17 @@
}
return false;
}
+
+ public static boolean checkCurrentOrManagedUserId(int currentUserId, Context context) {
+ if (currentUserId == UserHandle.myUserId()) {
+ return true;
+ }
+ List<UserHandle> allUsers = UserManagerCompat.getInstance(context).getUserProfiles();
+ for (int i = allUsers.size() - 1; i >= 0; i--) {
+ if (currentUserId == allUsers.get(i).getIdentifier()) {
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index 2b70219..5035721 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -21,6 +21,7 @@
import static com.android.launcher3.anim.Interpolators.ACCEL_2;
import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN;
import static com.android.launcher3.anim.Interpolators.LINEAR;
+import static com.android.quickstep.TaskUtils.checkCurrentOrManagedUserId;
import android.animation.Animator;
import android.animation.AnimatorSet;
@@ -123,13 +124,19 @@
private final TaskStackChangeListener mTaskStackListener = new TaskStackChangeListener() {
@Override
public void onTaskSnapshotChanged(int taskId, ThumbnailData snapshot) {
+ if (!mHandleTaskStackChanges) {
+ return;
+ }
updateThumbnail(taskId, snapshot);
}
@Override
public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
+ if (!mHandleTaskStackChanges) {
+ return;
+ }
// Check this is for the right user
- if (!checkCurrentUserId(userId, false /* debug */)) {
+ if (!checkCurrentOrManagedUserId(userId, getContext())) {
return;
}
@@ -142,20 +149,24 @@
@Override
public void onActivityUnpinned() {
+ if (!mHandleTaskStackChanges) {
+ return;
+ }
// TODO: Re-enable layout transitions for addition of the unpinned task
reloadIfNeeded();
}
@Override
public void onTaskRemoved(int taskId) {
+ if (!mHandleTaskStackChanges) {
+ return;
+ }
TaskView taskView = getTaskView(taskId);
if (taskView != null) {
dismissTask(taskView, true /* animate */, false /* removeTask */);
}
}
- };
- private TaskStackChangeListener mTaskStackClearFlagListener = new TaskStackChangeListener() {
@Override
public void onPinnedStackAnimationStarted() {
// Needed for activities that auto-enter PiP, which will not trigger a remote
@@ -174,7 +185,7 @@
private boolean mRunningTaskIconScaledDown = false;
private boolean mOverviewStateEnabled;
- private boolean mTaskStackListenerRegistered;
+ private boolean mHandleTaskStackChanges;
private Runnable mNextPageSwitchRunnable;
private boolean mSwipeDownShouldLaunchApp;
@@ -261,7 +272,7 @@
super.onAttachedToWindow();
updateTaskStackListenerState();
mActivity.addMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
- ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackClearFlagListener);
+ ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener);
}
@Override
@@ -269,8 +280,7 @@
super.onDetachedFromWindow();
updateTaskStackListenerState();
mActivity.removeMultiWindowModeChangedListener(mMultiWindowModeChangedListener);
- ActivityManagerWrapper.getInstance().unregisterTaskStackListener(
- mTaskStackClearFlagListener);
+ ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskStackListener);
}
@Override
@@ -434,18 +444,13 @@
}
private void updateTaskStackListenerState() {
- boolean registerStackListener = mOverviewStateEnabled && isAttachedToWindow()
+ boolean handleTaskStackChanges = mOverviewStateEnabled && isAttachedToWindow()
&& getWindowVisibility() == VISIBLE;
- if (registerStackListener != mTaskStackListenerRegistered) {
- if (registerStackListener) {
- ActivityManagerWrapper.getInstance()
- .registerTaskStackListener(mTaskStackListener);
+ if (handleTaskStackChanges != mHandleTaskStackChanges) {
+ mHandleTaskStackChanges = handleTaskStackChanges;
+ if (handleTaskStackChanges) {
reloadIfNeeded();
- } else {
- ActivityManagerWrapper.getInstance()
- .unregisterTaskStackListener(mTaskStackListener);
}
- mTaskStackListenerRegistered = registerStackListener;
}
}