Merge changes Id9fdcd71,Ic4d69d73 into sc-v2-dev
* changes: Stash taskbar in fallback recents Add FallbackTaskbarUIController
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4ce5c1b36
@@ -160,7 +160,7 @@ public abstract class BaseQuickstepLauncher extends Launcher
|
||||
|
||||
mTISBindHelper.onDestroy();
|
||||
if (mTaskbarManager != null) {
|
||||
mTaskbarManager.clearLauncher(this);
|
||||
mTaskbarManager.clearActivity(this);
|
||||
}
|
||||
|
||||
if (mLauncherUnfoldAnimationController != null) {
|
||||
@@ -318,7 +318,7 @@ public abstract class BaseQuickstepLauncher extends Launcher
|
||||
|
||||
private void onTISConnected(TISBinder binder) {
|
||||
mTaskbarManager = binder.getTaskbarManager();
|
||||
mTaskbarManager.setLauncher(BaseQuickstepLauncher.this);
|
||||
mTaskbarManager.setActivity(this);
|
||||
mOverviewCommandHelper = binder.getOverviewCommandHelper();
|
||||
}
|
||||
|
||||
@@ -348,6 +348,10 @@ public abstract class BaseQuickstepLauncher extends Launcher
|
||||
mTaskbarUIController = taskbarUIController;
|
||||
}
|
||||
|
||||
public @Nullable LauncherTaskbarUIController getTaskbarUIController() {
|
||||
return mTaskbarUIController;
|
||||
}
|
||||
|
||||
public <T extends OverviewActionsView> T getActionsView() {
|
||||
return (T) mActionsView;
|
||||
}
|
||||
@@ -371,10 +375,6 @@ public abstract class BaseQuickstepLauncher extends Launcher
|
||||
return mDepthController;
|
||||
}
|
||||
|
||||
public @Nullable LauncherTaskbarUIController getTaskbarUIController() {
|
||||
return mTaskbarUIController;
|
||||
}
|
||||
|
||||
public TaskbarStateHandler getTaskbarStateHandler() {
|
||||
return mTaskbarStateHandler;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_STASHED_LAUNCHER_STATE;
|
||||
import static com.android.launcher3.taskbar.TaskbarStashController.TASKBAR_STASH_DURATION;
|
||||
|
||||
import android.animation.Animator;
|
||||
|
||||
import com.android.launcher3.statemanager.StateManager;
|
||||
import com.android.quickstep.RecentsActivity;
|
||||
import com.android.quickstep.fallback.RecentsState;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
|
||||
/**
|
||||
* A data source which integrates with the fallback RecentsActivity instance (for 3P launchers).
|
||||
*/
|
||||
public class FallbackTaskbarUIController extends TaskbarUIController {
|
||||
|
||||
private final RecentsActivity mRecentsActivity;
|
||||
|
||||
private final StateManager.StateListener<RecentsState> mStateListener =
|
||||
new StateManager.StateListener<RecentsState>() {
|
||||
@Override
|
||||
public void onStateTransitionStart(RecentsState toState) {
|
||||
animateToRecentsState(toState);
|
||||
|
||||
// Handle tapping on live tile.
|
||||
RecentsView recentsView = mRecentsActivity.getOverviewPanel();
|
||||
recentsView.setTaskLaunchListener(toState == RecentsState.DEFAULT
|
||||
? (() -> animateToRecentsState(RecentsState.BACKGROUND_APP)) : null);
|
||||
}
|
||||
};
|
||||
|
||||
// Initialized in init.
|
||||
TaskbarControllers mControllers;
|
||||
|
||||
public FallbackTaskbarUIController(RecentsActivity recentsActivity) {
|
||||
mRecentsActivity = recentsActivity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init(TaskbarControllers taskbarControllers) {
|
||||
mControllers = taskbarControllers;
|
||||
|
||||
mRecentsActivity.setTaskbarUIController(this);
|
||||
mRecentsActivity.getStateManager().addStateListener(mStateListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
mRecentsActivity.setTaskbarUIController(null);
|
||||
mRecentsActivity.getStateManager().removeStateListener(mStateListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an animation to animate the taskbar for the given state (but does not start it).
|
||||
* Currently this animation just force stashes the taskbar in Overview.
|
||||
*/
|
||||
public Animator createAnimToRecentsState(RecentsState toState, long duration) {
|
||||
boolean forceStashed = toState.hasOverviewActions();
|
||||
TaskbarStashController controller = mControllers.taskbarStashController;
|
||||
// Set both FLAG_IN_STASHED_LAUNCHER_STATE and FLAG_IN_APP to ensure the state is respected.
|
||||
// For all other states, just use the current stashed-in-app setting (e.g. if long clicked).
|
||||
controller.updateStateForFlag(FLAG_IN_STASHED_LAUNCHER_STATE, forceStashed);
|
||||
controller.updateStateForFlag(FLAG_IN_APP, !forceStashed);
|
||||
return controller.applyStateWithoutStart(duration);
|
||||
}
|
||||
|
||||
private void animateToRecentsState(RecentsState toState) {
|
||||
Animator anim = createAnimToRecentsState(toState, TASKBAR_STASH_DURATION);
|
||||
if (anim != null) {
|
||||
anim.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,6 @@ import com.android.launcher3.BaseQuickstepLauncher;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherState;
|
||||
import com.android.launcher3.QuickstepTransitionManager;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.anim.AnimatorListeners;
|
||||
import com.android.launcher3.anim.PendingAnimation;
|
||||
@@ -67,10 +66,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
|
||||
private final BaseQuickstepLauncher mLauncher;
|
||||
|
||||
private final TaskbarActivityContext mContext;
|
||||
private final TaskbarDragLayer mTaskbarDragLayer;
|
||||
private final TaskbarView mTaskbarView;
|
||||
|
||||
private final AnimatedFloat mIconAlignmentForResumedState =
|
||||
new AnimatedFloat(this::onIconAlignmentRatioChanged);
|
||||
private final AnimatedFloat mIconAlignmentForGestureState =
|
||||
@@ -157,12 +152,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
}
|
||||
};
|
||||
|
||||
public LauncherTaskbarUIController(
|
||||
BaseQuickstepLauncher launcher, TaskbarActivityContext context) {
|
||||
mContext = context;
|
||||
mTaskbarDragLayer = context.getDragLayer();
|
||||
mTaskbarView = mTaskbarDragLayer.findViewById(R.id.taskbar_view);
|
||||
|
||||
public LauncherTaskbarUIController(BaseQuickstepLauncher launcher) {
|
||||
mLauncher = launcher;
|
||||
}
|
||||
|
||||
@@ -217,7 +207,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
@Override
|
||||
protected void updateContentInsets(Rect outContentInsets) {
|
||||
int contentHeight = mControllers.taskbarStashController.getContentHeight();
|
||||
outContentInsets.top = mTaskbarDragLayer.getHeight() - contentHeight;
|
||||
TaskbarDragLayer dragLayer = mControllers.taskbarActivityContext.getDragLayer();
|
||||
outContentInsets.top = dragLayer.getHeight() - contentHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,15 +334,15 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
* @return Whether any Taskbar item could handle the given MotionEvent if given the chance.
|
||||
*/
|
||||
public boolean isEventOverAnyTaskbarItem(MotionEvent ev) {
|
||||
return mTaskbarView.isEventOverAnyItem(ev);
|
||||
return mControllers.taskbarViewController.isEventOverAnyItem(ev);
|
||||
}
|
||||
|
||||
public boolean isDraggingItem() {
|
||||
return mContext.getDragController().isDragging();
|
||||
return mControllers.taskbarDragController.isDragging();
|
||||
}
|
||||
|
||||
public View getRootView() {
|
||||
return mTaskbarDragLayer;
|
||||
return mControllers.taskbarActivityContext.getDragLayer();
|
||||
}
|
||||
|
||||
private void setIconAlpha(LauncherState state, float progress) {
|
||||
@@ -418,7 +409,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
@Override
|
||||
public void onTaskbarIconLaunched(WorkspaceItemInfo item) {
|
||||
InstanceId instanceId = new InstanceIdSequence().newInstanceId();
|
||||
mLauncher.logAppLaunch(mContext.getStatsLogManager(), item, instanceId);
|
||||
mLauncher.logAppLaunch(mControllers.taskbarActivityContext.getStatsLogManager(), item,
|
||||
instanceId);
|
||||
}
|
||||
|
||||
private final class TaskBarRecentsAnimationListener implements RecentsAnimationListener {
|
||||
|
||||
@@ -62,8 +62,11 @@ public class TaskbarDragLayerController {
|
||||
public void init(TaskbarControllers controllers) {
|
||||
mControllers = controllers;
|
||||
mTaskbarDragLayer.init(new TaskbarDragLayerCallbacks());
|
||||
|
||||
mBgTaskbar.value = 1;
|
||||
mKeyguardBgTaskbar.value = 1;
|
||||
mBgOverride.value = 1;
|
||||
updateBackgroundAlpha();
|
||||
}
|
||||
|
||||
public void onDestroy() {
|
||||
|
||||
@@ -39,14 +39,17 @@ import com.android.launcher3.BaseQuickstepLauncher;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
import com.android.launcher3.util.DisplayController;
|
||||
import com.android.launcher3.util.DisplayController.Info;
|
||||
import com.android.launcher3.util.SettingsCache;
|
||||
import com.android.launcher3.util.SimpleBroadcastReceiver;
|
||||
import com.android.quickstep.RecentsActivity;
|
||||
import com.android.quickstep.SysUINavigationMode;
|
||||
import com.android.quickstep.SysUINavigationMode.Mode;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.quickstep.TouchInteractionService;
|
||||
import com.android.systemui.unfold.UnfoldTransitionProgressProvider;
|
||||
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider;
|
||||
|
||||
/**
|
||||
@@ -71,7 +74,7 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
||||
new ScopedUnfoldTransitionProgressProvider();
|
||||
|
||||
private TaskbarActivityContext mTaskbarActivityContext;
|
||||
private BaseQuickstepLauncher mLauncher;
|
||||
private StatefulActivity mActivity;
|
||||
/**
|
||||
* Cache a copy here so we can initialize state whenever taskbar is recreated, since
|
||||
* this class does not get re-initialized w/ new taskbars.
|
||||
@@ -149,25 +152,50 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a launcher to act as taskbar callback
|
||||
* Sets a {@link StatefulActivity} to act as taskbar callback
|
||||
*/
|
||||
public void setLauncher(@NonNull BaseQuickstepLauncher launcher) {
|
||||
mLauncher = launcher;
|
||||
mUnfoldProgressProvider.setSourceProvider(launcher
|
||||
.getUnfoldTransitionProgressProvider());
|
||||
public void setActivity(@NonNull StatefulActivity activity) {
|
||||
mActivity = activity;
|
||||
mUnfoldProgressProvider.setSourceProvider(getUnfoldTransitionProgressProviderForActivity(
|
||||
activity));
|
||||
|
||||
if (mTaskbarActivityContext != null) {
|
||||
mTaskbarActivityContext.setUIController(
|
||||
new LauncherTaskbarUIController(launcher, mTaskbarActivityContext));
|
||||
createTaskbarUIControllerForActivity(mActivity));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears a previously set Launcher
|
||||
* Returns an {@link UnfoldTransitionProgressProvider} to use while the given StatefulActivity
|
||||
* is active.
|
||||
*/
|
||||
public void clearLauncher(@NonNull BaseQuickstepLauncher launcher) {
|
||||
if (mLauncher == launcher) {
|
||||
mLauncher = null;
|
||||
private UnfoldTransitionProgressProvider getUnfoldTransitionProgressProviderForActivity(
|
||||
StatefulActivity activity) {
|
||||
if (activity instanceof BaseQuickstepLauncher) {
|
||||
return ((BaseQuickstepLauncher) activity).getUnfoldTransitionProgressProvider();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link TaskbarUIController} to use while the given StatefulActivity is active.
|
||||
*/
|
||||
private TaskbarUIController createTaskbarUIControllerForActivity(StatefulActivity activity) {
|
||||
if (activity instanceof BaseQuickstepLauncher) {
|
||||
return new LauncherTaskbarUIController((BaseQuickstepLauncher) activity);
|
||||
}
|
||||
if (activity instanceof RecentsActivity) {
|
||||
return new FallbackTaskbarUIController((RecentsActivity) activity);
|
||||
}
|
||||
return TaskbarUIController.DEFAULT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears a previously set {@link StatefulActivity}
|
||||
*/
|
||||
public void clearActivity(@NonNull StatefulActivity activity) {
|
||||
if (mActivity == activity) {
|
||||
mActivity = null;
|
||||
if (mTaskbarActivityContext != null) {
|
||||
mTaskbarActivityContext.setUIController(TaskbarUIController.DEFAULT);
|
||||
}
|
||||
@@ -192,10 +220,11 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
||||
|
||||
mTaskbarActivityContext = new TaskbarActivityContext(mContext, dp.copy(mContext),
|
||||
mNavButtonController, mUnfoldProgressProvider);
|
||||
|
||||
mTaskbarActivityContext.init(mSharedState);
|
||||
if (mLauncher != null) {
|
||||
if (mActivity != null) {
|
||||
mTaskbarActivityContext.setUIController(
|
||||
new LauncherTaskbarUIController(mLauncher, mTaskbarActivityContext));
|
||||
createTaskbarUIControllerForActivity(mActivity));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -253,6 +253,14 @@ public class TaskbarViewController {
|
||||
mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given MotionEvent, *in screen coorindates*, is within any Taskbar item's
|
||||
* touch bounds.
|
||||
*/
|
||||
public boolean isEventOverAnyItem(MotionEvent ev) {
|
||||
return mTaskbarView.isEventOverAnyItem(ev);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callbacks for {@link TaskbarView} to interact with its controller.
|
||||
*/
|
||||
|
||||
@@ -52,6 +52,7 @@ import com.android.launcher3.anim.PendingAnimation;
|
||||
import com.android.launcher3.statehandlers.DepthController;
|
||||
import com.android.launcher3.statemanager.BaseState;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
import com.android.launcher3.taskbar.TaskbarUIController;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.launcher3.util.WindowBounds;
|
||||
import com.android.launcher3.views.ScrimView;
|
||||
@@ -138,6 +139,9 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public abstract TaskbarUIController getTaskbarController();
|
||||
|
||||
public final boolean isResumed() {
|
||||
ACTIVITY_TYPE activity = getCreatedActivity();
|
||||
return activity != null && activity.hasBeenResumed();
|
||||
|
||||
@@ -21,6 +21,8 @@ import static com.android.quickstep.fallback.RecentsState.BACKGROUND_APP;
|
||||
import static com.android.quickstep.fallback.RecentsState.DEFAULT;
|
||||
import static com.android.quickstep.fallback.RecentsState.HOME;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.view.MotionEvent;
|
||||
@@ -29,7 +31,9 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.statemanager.StateManager;
|
||||
import com.android.launcher3.taskbar.FallbackTaskbarUIController;
|
||||
import com.android.launcher3.touch.PagedOrientationHandler;
|
||||
import com.android.quickstep.GestureState.GestureEndTarget;
|
||||
import com.android.quickstep.fallback.RecentsState;
|
||||
import com.android.quickstep.util.ActivityInitListener;
|
||||
import com.android.quickstep.util.AnimatorControllerWithResistance;
|
||||
@@ -102,6 +106,15 @@ public final class FallbackActivityInterface extends
|
||||
return RecentsActivity.ACTIVITY_TRACKER.getCreatedActivity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FallbackTaskbarUIController getTaskbarController() {
|
||||
RecentsActivity activity = getCreatedActivity();
|
||||
if (activity == null) {
|
||||
return null;
|
||||
}
|
||||
return activity.getTaskbarUIController();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public RecentsView getVisibleRecentsView() {
|
||||
@@ -182,7 +195,7 @@ public final class FallbackActivityInterface extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecentsState stateFromGestureEndTarget(GestureState.GestureEndTarget endTarget) {
|
||||
public RecentsState stateFromGestureEndTarget(GestureEndTarget endTarget) {
|
||||
switch (endTarget) {
|
||||
case RECENTS:
|
||||
return DEFAULT;
|
||||
@@ -202,6 +215,28 @@ public final class FallbackActivityInterface extends
|
||||
rotationTouchHelper.getDisplayRotation());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Animator getParallelAnimationToLauncher(GestureEndTarget endTarget,
|
||||
long duration, RecentsAnimationCallbacks callbacks) {
|
||||
FallbackTaskbarUIController uiController = getTaskbarController();
|
||||
Animator superAnimator = super.getParallelAnimationToLauncher(
|
||||
endTarget, duration, callbacks);
|
||||
if (uiController == null) {
|
||||
return superAnimator;
|
||||
}
|
||||
RecentsState toState = stateFromGestureEndTarget(endTarget);
|
||||
Animator taskbarAnimator = uiController.createAnimToRecentsState(toState, duration);
|
||||
if (taskbarAnimator == null) {
|
||||
return superAnimator;
|
||||
}
|
||||
if (superAnimator == null) {
|
||||
return taskbarAnimator;
|
||||
}
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
animatorSet.playTogether(superAnimator, taskbarAnimator);
|
||||
return animatorSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getOverviewScrimColorForState(RecentsActivity activity, RecentsState state) {
|
||||
return state.getScrimColor(activity);
|
||||
|
||||
@@ -187,7 +187,8 @@ public final class LauncherActivityInterface extends
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private LauncherTaskbarUIController getTaskbarController() {
|
||||
@Override
|
||||
public LauncherTaskbarUIController getTaskbarController() {
|
||||
BaseQuickstepLauncher launcher = getCreatedActivity();
|
||||
if (launcher == null) {
|
||||
return null;
|
||||
|
||||
@@ -60,6 +60,8 @@ import com.android.launcher3.statemanager.StateManager;
|
||||
import com.android.launcher3.statemanager.StateManager.AtomicAnimationFactory;
|
||||
import com.android.launcher3.statemanager.StateManager.StateHandler;
|
||||
import com.android.launcher3.statemanager.StatefulActivity;
|
||||
import com.android.launcher3.taskbar.FallbackTaskbarUIController;
|
||||
import com.android.launcher3.taskbar.TaskbarManager;
|
||||
import com.android.launcher3.util.ActivityOptionsWrapper;
|
||||
import com.android.launcher3.util.ActivityTracker;
|
||||
import com.android.launcher3.util.RunnableList;
|
||||
@@ -73,6 +75,7 @@ import com.android.quickstep.fallback.RecentsDragLayer;
|
||||
import com.android.quickstep.fallback.RecentsState;
|
||||
import com.android.quickstep.util.RecentsAtomicAnimationFactory;
|
||||
import com.android.quickstep.util.SplitSelectStateController;
|
||||
import com.android.quickstep.util.TISBindHelper;
|
||||
import com.android.quickstep.views.OverviewActionsView;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
import com.android.quickstep.views.TaskView;
|
||||
@@ -101,6 +104,9 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
private ScrimView mScrimView;
|
||||
private FallbackRecentsView mFallbackRecentsView;
|
||||
private OverviewActionsView mActionsView;
|
||||
private TISBindHelper mTISBindHelper;
|
||||
private @Nullable TaskbarManager mTaskbarManager;
|
||||
private @Nullable FallbackTaskbarUIController mTaskbarUIController;
|
||||
|
||||
private Configuration mOldConfig;
|
||||
|
||||
@@ -125,6 +131,21 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
new SplitSelectStateController(mHandler, SystemUiProxy.INSTANCE.get(this));
|
||||
mDragLayer.recreateControllers();
|
||||
mFallbackRecentsView.init(mActionsView, controller);
|
||||
|
||||
mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
|
||||
}
|
||||
|
||||
private void onTISConnected(TouchInteractionService.TISBinder binder) {
|
||||
mTaskbarManager = binder.getTaskbarManager();
|
||||
mTaskbarManager.setActivity(this);
|
||||
}
|
||||
|
||||
public void setTaskbarUIController(FallbackTaskbarUIController taskbarUIController) {
|
||||
mTaskbarUIController = taskbarUIController;
|
||||
}
|
||||
|
||||
public FallbackTaskbarUIController getTaskbarUIController() {
|
||||
return mTaskbarUIController;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -346,6 +367,11 @@ public final class RecentsActivity extends StatefulActivity<RecentsState> {
|
||||
super.onDestroy();
|
||||
ACTIVITY_TRACKER.onActivityDestroyed(this);
|
||||
mActivityLaunchAnimationRunner = null;
|
||||
|
||||
mTISBindHelper.onDestroy();
|
||||
if (mTaskbarManager != null) {
|
||||
mTaskbarManager.clearActivity(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -459,6 +459,12 @@ public class TouchInteractionService extends Service
|
||||
} else {
|
||||
am.unregisterSystemAction(SYSTEM_ACTION_ID_ALL_APPS);
|
||||
}
|
||||
|
||||
StatefulActivity newOverviewActivity = mOverviewComponentObserver.getActivityInterface()
|
||||
.getCreatedActivity();
|
||||
if (newOverviewActivity != null) {
|
||||
mTaskbarManager.setActivity(newOverviewActivity);
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
||||
Reference in New Issue
Block a user