Pause the prediction update until the app launch transition ends.
b/319162661 issue is similar to hotseat updates on app click : b/148800229 and ag/10235572 So we will pause the prediction updates until the app launch transition is complete. See https://b.corp.google.com/issues/319162661#comment9 and https://b.corp.google.com/issues/319162661#comment10 for bug report analysis. Before fix: https://b.corp.google.com/issues/319162661#comment11 After fix: https://b.corp.google.com/issues/319162661#comment12 Bug: 319162661 Test: Manual Flag: NA Change-Id: I797ce982569c7950628368b854fb3b6766f0fc28
This commit is contained in:
@@ -72,6 +72,8 @@ public class PredictionRowView<T extends Context & ActivityContext>
|
||||
|
||||
private boolean mPredictionsEnabled = false;
|
||||
|
||||
private boolean mPredictionUiUpdatePaused = false;
|
||||
|
||||
public PredictionRowView(@NonNull Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -193,7 +195,18 @@ public class PredictionRowView<T extends Context & ActivityContext>
|
||||
applyPredictionApps();
|
||||
}
|
||||
|
||||
/** Pause the prediction row UI update */
|
||||
public void setPredictionUiUpdatePaused(boolean predictionUiUpdatePaused) {
|
||||
mPredictionUiUpdatePaused = predictionUiUpdatePaused;
|
||||
if (!mPredictionUiUpdatePaused) {
|
||||
applyPredictionApps();
|
||||
}
|
||||
}
|
||||
|
||||
private void applyPredictionApps() {
|
||||
if (mPredictionUiUpdatePaused) {
|
||||
return;
|
||||
}
|
||||
if (getChildCount() != mNumPredictedAppsPerRow) {
|
||||
while (getChildCount() > mNumPredictedAppsPerRow) {
|
||||
removeViewAt(0);
|
||||
|
||||
@@ -367,11 +367,19 @@ public class QuickstepLauncher extends Launcher {
|
||||
mHotseatPredictionController.setPauseUIUpdate(getTaskbarUIController() == null);
|
||||
Log.d("b/318394698", "startActivitySafely being run, getTaskbarUIController is: "
|
||||
+ getTaskbarUIController());
|
||||
PredictionRowView<?> predictionRowView =
|
||||
getAppsView().getFloatingHeaderView().findFixedRowByType(PredictionRowView.class);
|
||||
// Pause the prediction row updates until the transition (if it exists) ends.
|
||||
predictionRowView.setPredictionUiUpdatePaused(true);
|
||||
RunnableList result = super.startActivitySafely(v, intent, item);
|
||||
if (result == null) {
|
||||
mHotseatPredictionController.setPauseUIUpdate(false);
|
||||
predictionRowView.setPredictionUiUpdatePaused(false);
|
||||
} else {
|
||||
result.add(() -> mHotseatPredictionController.setPauseUIUpdate(false));
|
||||
result.add(() -> {
|
||||
mHotseatPredictionController.setPauseUIUpdate(false);
|
||||
predictionRowView.setPredictionUiUpdatePaused(false);
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -468,7 +476,7 @@ public class QuickstepLauncher extends Launcher {
|
||||
|
||||
@Override
|
||||
public void bindExtraContainerItems(FixedContainerItems item) {
|
||||
Log.d(TAG, "Bind extra container items");
|
||||
Log.d(TAG, "Bind extra container items. ContainerId = " + item.containerId);
|
||||
if (item.containerId == Favorites.CONTAINER_PREDICTION) {
|
||||
mAllAppsPredictions = item;
|
||||
PredictionRowView<?> predictionRowView =
|
||||
|
||||
Reference in New Issue
Block a user