diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index c96757456b32d..d0fa397acbf09 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4937,6 +4937,7 @@ public final class ActivityThread { // Isolated processes aren't going to do UI. return; } + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setupGraphicsSupport"); try { int uid = Process.myUid(); String[] packages = getPackageManager().getPackagesForUid(uid); @@ -4947,6 +4948,8 @@ public final class ActivityThread { } } catch (RemoteException e) { throw e.rethrowFromSystemServer(); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } } @@ -5129,6 +5132,7 @@ public final class ActivityThread { /** * Initialize the default http proxy in this process for the reasons we set the time zone. */ + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "Setup proxies"); final IBinder b = ServiceManager.getService(Context.CONNECTIVITY_SERVICE); if (b != null) { // In pre-boot mode (doing initial launch to collect password), not @@ -5139,9 +5143,11 @@ public final class ActivityThread { final ProxyInfo proxyInfo = service.getProxyForNetwork(null); Proxy.setHttpProxySystemProperty(proxyInfo); } catch (RemoteException e) { + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); throw e.rethrowFromSystemServer(); } } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); // Instrumentation info affects the class loader, so load it before // setting up the app context. @@ -5213,7 +5219,9 @@ public final class ActivityThread { // Install the Network Security Config Provider. This must happen before the application // code is loaded to prevent issues with instances of TLS objects being created before // the provider is installed. + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "NetworkSecurityConfigProvider.install"); NetworkSecurityConfigProvider.install(appContext); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); // Continue loading instrumentation. if (ii != null) { diff --git a/core/java/android/app/ApplicationLoaders.java b/core/java/android/app/ApplicationLoaders.java index c86994438096b..6a73829da154b 100644 --- a/core/java/android/app/ApplicationLoaders.java +++ b/core/java/android/app/ApplicationLoaders.java @@ -65,7 +65,9 @@ class ApplicationLoaders { Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setupVulkanLayerPath"); setupVulkanLayerPath(pathClassloader, librarySearchPath); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); mLoaders.put(zip, pathClassloader); return pathClassloader; diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 3f870005abfe4..185884fab7533 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -806,6 +806,8 @@ public final class LoadedApk { return mApplication; } + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "makeApplication"); + Application app = null; String appClass = mApplicationInfo.className; @@ -816,7 +818,10 @@ public final class LoadedApk { try { java.lang.ClassLoader cl = getClassLoader(); if (!mPackageName.equals("android")) { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, + "initializeJavaContextClassLoader"); initializeJavaContextClassLoader(); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this); app = mActivityThread.mInstrumentation.newApplication( @@ -824,6 +829,7 @@ public final class LoadedApk { appContext.setOuterContext(app); } catch (Exception e) { if (!mActivityThread.mInstrumentation.onException(app, e)) { + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); throw new RuntimeException( "Unable to instantiate application " + appClass + ": " + e.toString(), e); @@ -837,6 +843,7 @@ public final class LoadedApk { instrumentation.callApplicationOnCreate(app); } catch (Exception e) { if (!instrumentation.onException(app, e)) { + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); throw new RuntimeException( "Unable to create application " + app.getClass().getName() + ": " + e.toString(), e); @@ -857,6 +864,8 @@ public final class LoadedApk { rewriteRValues(getClassLoader(), packageIdentifiers.valueAt(i), id); } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + return app; } diff --git a/core/java/com/android/internal/os/PathClassLoaderFactory.java b/core/java/com/android/internal/os/PathClassLoaderFactory.java index e5d36940a628a..06a93b254bf5a 100644 --- a/core/java/com/android/internal/os/PathClassLoaderFactory.java +++ b/core/java/com/android/internal/os/PathClassLoaderFactory.java @@ -16,6 +16,8 @@ package com.android.internal.os; +import android.os.Trace; + import dalvik.system.PathClassLoader; /** @@ -40,11 +42,13 @@ public class PathClassLoaderFactory { boolean isNamespaceShared) { PathClassLoader pathClassloader = new PathClassLoader(dexPath, librarySearchPath, parent); + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "createClassloaderNamespace"); String errorMessage = createClassloaderNamespace(pathClassloader, targetSdkVersion, librarySearchPath, libraryPermittedPath, isNamespaceShared); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); if (errorMessage != null) { throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " +