Loading core/java/android/app/ActivityThread.java +4 −1 Original line number Diff line number Diff line Loading @@ -7438,6 +7438,7 @@ public final class ActivityThread extends ClientTransactionHandler } mDdmSyncStageUpdater.next(Stage.Running); long timestampApplicationOnCreateNs = 0; try { // If the app is being launched for full backup or restore, bring it up in // a restricted environment with the base application class. Loading Loading @@ -7480,8 +7481,10 @@ public final class ActivityThread extends ClientTransactionHandler + data.instrumentationName + ": " + e.toString(), e); } try { timestampApplicationOnCreateNs = SystemClock.elapsedRealtimeNanos(); mInstrumentation.callApplicationOnCreate(app); } catch (Exception e) { timestampApplicationOnCreateNs = 0; if (!mInstrumentation.onException(app, e)) { throw new RuntimeException( "Unable to create application " + app.getClass().getName() Loading Loading @@ -7519,7 +7522,7 @@ public final class ActivityThread extends ClientTransactionHandler } try { mgr.finishAttachApplication(mStartSeq); mgr.finishAttachApplication(mStartSeq, timestampApplicationOnCreateNs); } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); } Loading core/java/android/app/IActivityManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ interface IActivityManager { oneway void finishReceiver(in IBinder who, int resultCode, in String resultData, in Bundle map, boolean abortBroadcast, int flags); void attachApplication(in IApplicationThread app, long startSeq); void finishAttachApplication(long startSeq); void finishAttachApplication(long startSeq, long timestampApplicationOnCreateNs); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); @UnsupportedAppUsage void moveTaskToFront(in IApplicationThread caller, in String callingPackage, int task, Loading core/java/android/app/activity_manager.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,13 @@ flag { description: "Add a new callback in Service to indicate a FGS has reached its timeout." bug: "317799821" } flag { namespace: "system_performance" name: "app_start_info_timestamps" description: "Additional timestamps." bug: "287153617" metadata { purpose: PURPOSE_BUGFIX } } services/core/java/com/android/server/am/ActivityManagerService.java +14 −4 Original line number Diff line number Diff line Loading @@ -5034,7 +5034,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override public final void finishAttachApplication(long startSeq) { public final void finishAttachApplication(long startSeq, long timestampApplicationOnCreateNs) { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); Loading @@ -5054,6 +5054,11 @@ public class ActivityManagerService extends IActivityManager.Stub } finally { Binder.restoreCallingIdentity(origId); } if (android.app.Flags.appStartInfoTimestamps() && timestampApplicationOnCreateNs > 0) { addStartInfoTimestampInternal(ApplicationStartInfo.START_TIMESTAMP_APPLICATION_ONCREATE, timestampApplicationOnCreateNs, UserHandle.getUserId(uid), uid); } } private void handleBindApplicationTimeoutSoft(ProcessRecord app, int softTimeoutMillis) { Loading Loading @@ -10253,10 +10258,15 @@ public class ActivityManagerService extends IActivityManager.Stub mUserController.handleIncomingUser(Binder.getCallingPid(), callingUid, userId, true, ALLOW_NON_FULL, "addStartInfoTimestamp", null); final String packageName = Settings.getPackageNameForUid(mContext, callingUid); addStartInfoTimestampInternal(key, timestampNs, userId, callingUid); } mProcessList.getAppStartInfoTracker().addTimestampToStart(packageName, UserHandle.getUid(userId, UserHandle.getAppId(callingUid)), timestampNs, key); private void addStartInfoTimestampInternal(int key, long timestampNs, int userId, int uid) { mProcessList.getAppStartInfoTracker().addTimestampToStart( Settings.getPackageNameForUid(mContext, uid), UserHandle.getUid(userId, UserHandle.getAppId(uid)), timestampNs, key); } @Override Loading services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class AsyncProcessStartTest { + Arrays.toString(invocation.getArguments())); if (!wedge) { if (mRealAms.mConstants.mEnableWaitForFinishAttachApplication) { mRealAms.finishAttachApplication(0); mRealAms.finishAttachApplication(0, 0); } } return null; Loading Loading
core/java/android/app/ActivityThread.java +4 −1 Original line number Diff line number Diff line Loading @@ -7438,6 +7438,7 @@ public final class ActivityThread extends ClientTransactionHandler } mDdmSyncStageUpdater.next(Stage.Running); long timestampApplicationOnCreateNs = 0; try { // If the app is being launched for full backup or restore, bring it up in // a restricted environment with the base application class. Loading Loading @@ -7480,8 +7481,10 @@ public final class ActivityThread extends ClientTransactionHandler + data.instrumentationName + ": " + e.toString(), e); } try { timestampApplicationOnCreateNs = SystemClock.elapsedRealtimeNanos(); mInstrumentation.callApplicationOnCreate(app); } catch (Exception e) { timestampApplicationOnCreateNs = 0; if (!mInstrumentation.onException(app, e)) { throw new RuntimeException( "Unable to create application " + app.getClass().getName() Loading Loading @@ -7519,7 +7522,7 @@ public final class ActivityThread extends ClientTransactionHandler } try { mgr.finishAttachApplication(mStartSeq); mgr.finishAttachApplication(mStartSeq, timestampApplicationOnCreateNs); } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); } Loading
core/java/android/app/IActivityManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ interface IActivityManager { oneway void finishReceiver(in IBinder who, int resultCode, in String resultData, in Bundle map, boolean abortBroadcast, int flags); void attachApplication(in IApplicationThread app, long startSeq); void finishAttachApplication(long startSeq); void finishAttachApplication(long startSeq, long timestampApplicationOnCreateNs); List<ActivityManager.RunningTaskInfo> getTasks(int maxNum); @UnsupportedAppUsage void moveTaskToFront(in IApplicationThread caller, in String callingPackage, int task, Loading
core/java/android/app/activity_manager.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,13 @@ flag { description: "Add a new callback in Service to indicate a FGS has reached its timeout." bug: "317799821" } flag { namespace: "system_performance" name: "app_start_info_timestamps" description: "Additional timestamps." bug: "287153617" metadata { purpose: PURPOSE_BUGFIX } }
services/core/java/com/android/server/am/ActivityManagerService.java +14 −4 Original line number Diff line number Diff line Loading @@ -5034,7 +5034,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override public final void finishAttachApplication(long startSeq) { public final void finishAttachApplication(long startSeq, long timestampApplicationOnCreateNs) { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); Loading @@ -5054,6 +5054,11 @@ public class ActivityManagerService extends IActivityManager.Stub } finally { Binder.restoreCallingIdentity(origId); } if (android.app.Flags.appStartInfoTimestamps() && timestampApplicationOnCreateNs > 0) { addStartInfoTimestampInternal(ApplicationStartInfo.START_TIMESTAMP_APPLICATION_ONCREATE, timestampApplicationOnCreateNs, UserHandle.getUserId(uid), uid); } } private void handleBindApplicationTimeoutSoft(ProcessRecord app, int softTimeoutMillis) { Loading Loading @@ -10253,10 +10258,15 @@ public class ActivityManagerService extends IActivityManager.Stub mUserController.handleIncomingUser(Binder.getCallingPid(), callingUid, userId, true, ALLOW_NON_FULL, "addStartInfoTimestamp", null); final String packageName = Settings.getPackageNameForUid(mContext, callingUid); addStartInfoTimestampInternal(key, timestampNs, userId, callingUid); } mProcessList.getAppStartInfoTracker().addTimestampToStart(packageName, UserHandle.getUid(userId, UserHandle.getAppId(callingUid)), timestampNs, key); private void addStartInfoTimestampInternal(int key, long timestampNs, int userId, int uid) { mProcessList.getAppStartInfoTracker().addTimestampToStart( Settings.getPackageNameForUid(mContext, uid), UserHandle.getUid(userId, UserHandle.getAppId(uid)), timestampNs, key); } @Override Loading
services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class AsyncProcessStartTest { + Arrays.toString(invocation.getArguments())); if (!wedge) { if (mRealAms.mConstants.mEnableWaitForFinishAttachApplication) { mRealAms.finishAttachApplication(0); mRealAms.finishAttachApplication(0, 0); } } return null; Loading