diff options
author | Tony Wickham <twickham@google.com> | 2019-09-11 08:57:03 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2019-09-11 14:41:52 -0700 |
commit | 51f2919815c6543c3582386d70f00aa3d31adda5 (patch) | |
tree | 0ea4fde4d75c88d6589812108fb08bc9a7f71001 | |
parent | d81f60f32472b2f863b336ba4610fb0ee95fe56f (diff) | |
download | android_packages_apps_Trebuchet-51f2919815c6543c3582386d70f00aa3d31adda5.tar.gz android_packages_apps_Trebuchet-51f2919815c6543c3582386d70f00aa3d31adda5.tar.bz2 android_packages_apps_Trebuchet-51f2919815c6543c3582386d70f00aa3d31adda5.zip |
Replace OnGlobalLayoutListener with StateListener to update predictions
Previously we were using OnGlobalLayoutListener, which is only called
when AllAppsContainerView or a child is re-laid out or visibility
changes to or from GONE. Since we no longer relayout when already
scrolled to the top, we need a better hook to check whether all apps has
changed visibility for the purpose of updating predictions.
Bug: 140823188
Change-Id: I7c4a0d94c529eb86b55729c75843c8b0bd673d8c
-rw-r--r-- | quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java index 085bbc4a5..1a59770a0 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java @@ -24,7 +24,6 @@ import android.app.prediction.AppPredictor; import android.app.prediction.AppTarget; import android.content.ComponentName; import android.content.Context; -import android.view.ViewTreeObserver.OnGlobalLayoutListener; import com.android.launcher3.AppInfo; import com.android.launcher3.InvariantDeviceProfile; @@ -32,6 +31,8 @@ import com.android.launcher3.InvariantDeviceProfile.OnIDPChangeListener; import com.android.launcher3.ItemInfoWithIcon; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; +import com.android.launcher3.LauncherState; +import com.android.launcher3.LauncherStateManager.StateListener; import com.android.launcher3.Utilities; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.allapps.AllAppsStore.OnUpdateListener; @@ -58,7 +59,7 @@ import java.util.List; * 4) Maintains the current active client id (for the predictions) and all updates are performed on * that client id. */ -public class PredictionUiStateManager implements OnGlobalLayoutListener, ItemInfoUpdateReceiver, +public class PredictionUiStateManager implements StateListener, ItemInfoUpdateReceiver, OnIDPChangeListener, OnUpdateListener { public static final String LAST_PREDICTION_ENABLED_STATE = "last_prediction_enabled_state"; @@ -153,7 +154,10 @@ public class PredictionUiStateManager implements OnGlobalLayoutListener, ItemInf public void reapplyItemInfo(ItemInfoWithIcon info) { } @Override - public void onGlobalLayout() { + public void onStateTransitionStart(LauncherState toState) { } + + @Override + public void onStateTransitionComplete(LauncherState state) { if (mAppsView == null) { return; } @@ -162,7 +166,8 @@ public class PredictionUiStateManager implements OnGlobalLayoutListener, ItemInf mPendingState = null; } if (mPendingState == null) { - mAppsView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + Launcher.getLauncher(mAppsView.getContext()).getStateManager() + .removeStateListener(this); } } @@ -170,9 +175,8 @@ public class PredictionUiStateManager implements OnGlobalLayoutListener, ItemInf boolean registerListener = mPendingState == null; mPendingState = state; if (registerListener) { - // OnGlobalLayoutListener is called whenever a view in the view tree changes - // visibility. Add a listener and wait until appsView is invisible again. - mAppsView.getViewTreeObserver().addOnGlobalLayoutListener(this); + // Add a listener and wait until appsView is invisible again. + Launcher.getLauncher(mAppsView.getContext()).getStateManager().addStateListener(this); } } |