Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58422967 authored by Yisroel Forta's avatar Yisroel Forta Committed by Android (Google) Code Review
Browse files

Merge "Add Application OnCreate timestamp to AppStartInfo" into main

parents d41e8b3c 129c68ba
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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.
@@ -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()
@@ -7519,7 +7522,7 @@ public final class ActivityThread extends ClientTransactionHandler
        }

        try {
            mgr.finishAttachApplication(mStartSeq);
            mgr.finishAttachApplication(mStartSeq, timestampApplicationOnCreateNs);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
+1 −1
Original line number Diff line number Diff line
@@ -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,
+10 −0
Original line number Diff line number Diff line
@@ -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
     }
}
+14 −4
Original line number Diff line number Diff line
@@ -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();
@@ -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) {
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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