diff options
| author | 2024-04-29 07:02:56 +0000 | |
|---|---|---|
| committer | 2024-04-29 07:02:56 +0000 | |
| commit | 2e13cbf61eeb36a84d34956d9e3d6b9658291889 (patch) | |
| tree | 73e2b16a3e4688ba1fc4cb0afd549c522b81cac1 | |
| parent | f6c1d92f446640da43443faa9c8e95820c5a81ad (diff) | |
| parent | 9908773f361df8bbbedc0d31785005fba72d91e9 (diff) | |
Merge "Adding start activity command with vsync aligned" into main
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerShellCommand.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index c579ab5aa70e..5af9424a025c 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -117,6 +117,7 @@ import android.util.DebugUtils; import android.util.DisplayMetrics; import android.util.TeeWriter; import android.util.proto.ProtoOutputStream; +import android.view.Choreographer; import android.view.Display; import android.window.SplashScreen; @@ -241,6 +242,23 @@ final class ActivityManagerShellCommand extends ShellCommand { case "start": case "start-activity": return runStartActivity(pw); + case "start-in-vsync": + final ProgressWaiter waiter = new ProgressWaiter(0); + final int[] startResult = new int[1]; + startResult[0] = -1; + mInternal.mUiHandler.runWithScissors( + () -> Choreographer.getInstance().postFrameCallback(frameTimeNanos -> { + try { + startResult[0] = runStartActivity(pw); + waiter.onFinished(0, null /* extras */); + } catch (Exception ex) { + getErrPrintWriter().println( + "Error: unable to start activity, " + ex); + } + }), + USER_OPERATION_TIMEOUT_MS / 2); + waiter.waitForFinish(USER_OPERATION_TIMEOUT_MS); + return startResult[0]; case "startservice": case "start-service": return runStartService(pw, false); @@ -4262,6 +4280,9 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --activityType <ACTIVITY_TYPE>: The activity type to launch the activity as."); pw.println(" --display <DISPLAY_ID>: The display to launch the activity into."); pw.println(" --splashscreen-icon: Show the splash screen icon on launch."); + pw.println(" start-in-vsync"); + pw.println(" Start an Activity with vsync aligned. See `start-activity` for the"); + pw.println(" possible options."); pw.println(" start-service [--user <USER_ID> | current] <INTENT>"); pw.println(" Start a Service. Options are:"); pw.println(" --user <USER_ID> | current: Specify which user to run as; if not"); |