Merge "Add debug logs to ActivityTracker" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4d102e75a
@@ -1002,7 +1002,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
ActiveGestureLog.INSTANCE.addLog(
|
||||
/* event= */ "cancelRecentsAnimation",
|
||||
/* gestureEvent= */ CANCEL_RECENTS_ANIMATION);
|
||||
mActivityInitListener.unregister();
|
||||
mActivityInitListener.unregister("AbsSwipeUpHandler.onRecentsAnimationCanceled");
|
||||
// Cache the recents animation controller so we can defer its cleanup to after having
|
||||
// properly cleaned up the screenshot without accidentally using it.
|
||||
mDeferredCleanupRecentsAnimationController = mRecentsAnimationController;
|
||||
@@ -1964,7 +1964,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
|
||||
// Cleanup when switching handlers
|
||||
mInputConsumerProxy.unregisterOnTouchDownCallback();
|
||||
mActivityInitListener.unregister();
|
||||
mActivityInitListener.unregister("AbsSwipeUpHandler.cancelCurrentAnimation");
|
||||
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(
|
||||
mActivityRestartListener);
|
||||
mTaskSnapshotCache.clear();
|
||||
@@ -1982,7 +1982,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
mGestureEndCallback.run();
|
||||
}
|
||||
|
||||
mActivityInitListener.unregister();
|
||||
mActivityInitListener.unregister("AbsSwipeUpHandler.invalidateHandler");
|
||||
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(
|
||||
mActivityRestartListener);
|
||||
mTaskSnapshotCache.clear();
|
||||
@@ -2486,11 +2486,11 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
|
||||
/**
|
||||
* Registers a callback to run when the activity is ready.
|
||||
*/
|
||||
public void initWhenReady() {
|
||||
public void initWhenReady(String reasonString) {
|
||||
// Preload the plan
|
||||
RecentsModel.INSTANCE.get(mContext).getTasks(null);
|
||||
|
||||
mActivityInitListener.register();
|
||||
mActivityInitListener.register(reasonString);
|
||||
}
|
||||
|
||||
private boolean shouldFadeOutTargetsForKeyboardQuickSwitch(
|
||||
|
||||
@@ -310,7 +310,7 @@ public class OverviewCommandHelper {
|
||||
.newHandler(gestureState, cmd.createTime);
|
||||
interactionHandler.setGestureEndCallback(
|
||||
() -> onTransitionComplete(cmd, interactionHandler));
|
||||
interactionHandler.initWhenReady();
|
||||
interactionHandler.initWhenReady("OverviewCommandHelper: cmd.type=" + cmd.type);
|
||||
|
||||
RecentsAnimationListener recentAnimListener = new RecentsAnimationListener() {
|
||||
@Override
|
||||
|
||||
@@ -394,7 +394,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
|
||||
mInteractionHandler = mHandlerFactory.newHandler(mGestureState, touchTimeMs);
|
||||
mInteractionHandler.setGestureEndCallback(this::onInteractionGestureFinished);
|
||||
mMotionPauseDetector.setOnMotionPauseListener(mInteractionHandler.getMotionPauseListener());
|
||||
mInteractionHandler.initWhenReady();
|
||||
mInteractionHandler.initWhenReady(
|
||||
"OtherActivityInputConsumer.startTouchTrackingForWindowAnimation");
|
||||
|
||||
if (mTaskAnimationManager.isRecentsAnimationRunning()) {
|
||||
mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(mGestureState);
|
||||
|
||||
@@ -57,16 +57,16 @@ public class ActivityInitListener<T extends BaseActivity> implements
|
||||
* Registers the activity-created listener. If the activity is already created, then the
|
||||
* callback provided in the constructor will be called synchronously.
|
||||
*/
|
||||
public void register() {
|
||||
public void register(String reasonString) {
|
||||
mIsRegistered = true;
|
||||
mActivityTracker.registerCallback(this);
|
||||
mActivityTracker.registerCallback(this, reasonString);
|
||||
}
|
||||
|
||||
/**
|
||||
* After calling this, we won't {@link #init} even when the activity is ready.
|
||||
*/
|
||||
public void unregister() {
|
||||
mActivityTracker.unregisterCallback(this);
|
||||
public void unregister(String reasonString) {
|
||||
mActivityTracker.unregisterCallback(this, reasonString);
|
||||
mIsRegistered = false;
|
||||
mOnInitListener = null;
|
||||
}
|
||||
|
||||
@@ -2651,6 +2651,7 @@ public class Launcher extends StatefulActivity<LauncherState>
|
||||
|
||||
mModel.dumpState(prefix, fd, writer, args);
|
||||
mOverlayManager.dump(prefix, writer);
|
||||
ACTIVITY_TRACKER.dump(prefix, writer);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -258,7 +258,7 @@ public class AddItemActivity extends BaseActivity
|
||||
.addCategory(Intent.CATEGORY_HOME)
|
||||
.setPackage(getPackageName())
|
||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
Launcher.ACTIVITY_TRACKER.registerCallback(listener);
|
||||
Launcher.ACTIVITY_TRACKER.registerCallback(listener, "AddItemActivity.onLongClick");
|
||||
startActivity(homeIntent, ApiWrapper.createFadeOutAnimOptions(this).toBundle());
|
||||
logCommand(LAUNCHER_ADD_EXTERNAL_ITEM_DRAGGED);
|
||||
mFinishOnPause = true;
|
||||
|
||||
@@ -18,10 +18,13 @@ package com.android.launcher3.util;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.GET_FROM_RECENTS_FAILURE;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.BaseActivity;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
@@ -31,6 +34,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
||||
*/
|
||||
public final class ActivityTracker<T extends BaseActivity> {
|
||||
|
||||
private static final String TAG = "ActivityTracker";
|
||||
|
||||
private WeakReference<T> mCurrentActivity = new WeakReference<>(null);
|
||||
private CopyOnWriteArrayList<SchedulerCallback<T>> mCallbacks = new CopyOnWriteArrayList<>();
|
||||
|
||||
@@ -57,12 +62,13 @@ public final class ActivityTracker<T extends BaseActivity> {
|
||||
*
|
||||
* @param callback The callback to call init() on when the activity is ready.
|
||||
*/
|
||||
public void registerCallback(SchedulerCallback<T> callback) {
|
||||
public void registerCallback(SchedulerCallback<T> callback, String reasonString) {
|
||||
Log.d(TAG, "Registering callback: " + callback + ", reason=" + reasonString);
|
||||
T activity = mCurrentActivity.get();
|
||||
mCallbacks.add(callback);
|
||||
if (activity != null) {
|
||||
if (!callback.init(activity, activity.isStarted())) {
|
||||
unregisterCallback(callback);
|
||||
unregisterCallback(callback, "ActivityTracker.registerCallback: Intent handled");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,7 +76,8 @@ public final class ActivityTracker<T extends BaseActivity> {
|
||||
/**
|
||||
* Unregisters a registered callback.
|
||||
*/
|
||||
public void unregisterCallback(SchedulerCallback<T> callback) {
|
||||
public void unregisterCallback(SchedulerCallback<T> callback, String reasonString) {
|
||||
Log.d(TAG, "Unregistering callback: " + callback + ", reason=" + reasonString);
|
||||
mCallbacks.remove(callback);
|
||||
}
|
||||
|
||||
@@ -87,16 +94,25 @@ public final class ActivityTracker<T extends BaseActivity> {
|
||||
|
||||
private boolean handleIntent(T activity, boolean alreadyOnHome) {
|
||||
boolean handled = false;
|
||||
if (!mCallbacks.isEmpty()) {
|
||||
Log.d(TAG, "handleIntent: mCallbacks=" + mCallbacks);
|
||||
}
|
||||
for (SchedulerCallback<T> cb : mCallbacks) {
|
||||
if (!cb.init(activity, alreadyOnHome)) {
|
||||
// Callback doesn't want any more updates
|
||||
unregisterCallback(cb);
|
||||
unregisterCallback(cb, "ActivityTracker.handleIntent: Intent handled");
|
||||
}
|
||||
handled = true;
|
||||
}
|
||||
return handled;
|
||||
}
|
||||
|
||||
public void dump(String prefix, PrintWriter writer) {
|
||||
writer.println(prefix + "ActivityTracker:");
|
||||
writer.println(prefix + "\tmCurrentActivity=" + mCurrentActivity.get());
|
||||
writer.println(prefix + "\tmCallbacks=" + mCallbacks);
|
||||
}
|
||||
|
||||
public interface SchedulerCallback<T extends BaseActivity> {
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user