diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java index 48c59f8ee72bc9..8630a29723b000 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactActivityDelegate.java @@ -20,6 +20,7 @@ import com.facebook.react.bridge.Callback; import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags; import com.facebook.react.modules.core.PermissionListener; +import com.facebook.systrace.Systrace; /** * Delegate class for {@link ReactActivity}. You can subclass this to provide custom implementations @@ -102,35 +103,41 @@ public String getMainComponentName() { } public void onCreate(Bundle savedInstanceState) { - String mainComponentName = getMainComponentName(); - final Bundle launchOptions = composeLaunchOptions(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && isWideColorGamutEnabled()) { - mActivity.getWindow().setColorMode(ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT); - } - if (ReactNativeFeatureFlags.enableBridgelessArchitecture()) { - mReactDelegate = - new ReactDelegate(getPlainActivity(), getReactHost(), mainComponentName, launchOptions); - } else { - mReactDelegate = - new ReactDelegate( - getPlainActivity(), - getReactNativeHost(), - mainComponentName, - launchOptions, - isFabricEnabled()) { - @Override - protected ReactRootView createRootView() { - ReactRootView rootView = ReactActivityDelegate.this.createRootView(); - if (rootView == null) { - rootView = super.createRootView(); - } - return rootView; - } - }; - } - if (mainComponentName != null) { - loadApp(mainComponentName); - } + Systrace.traceSection( + Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, + "ReactActivityDelegate.onCreate::init", + () -> { + String mainComponentName = getMainComponentName(); + final Bundle launchOptions = composeLaunchOptions(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && isWideColorGamutEnabled()) { + mActivity.getWindow().setColorMode(ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT); + } + if (ReactNativeFeatureFlags.enableBridgelessArchitecture()) { + mReactDelegate = + new ReactDelegate( + getPlainActivity(), getReactHost(), mainComponentName, launchOptions); + } else { + mReactDelegate = + new ReactDelegate( + getPlainActivity(), + getReactNativeHost(), + mainComponentName, + launchOptions, + isFabricEnabled()) { + @Override + protected ReactRootView createRootView() { + ReactRootView rootView = ReactActivityDelegate.this.createRootView(); + if (rootView == null) { + rootView = super.createRootView(); + } + return rootView; + } + }; + } + if (mainComponentName != null) { + loadApp(mainComponentName); + } + }); } protected void loadApp(String appKey) { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt index 14b8a8b60551ca..9226997df02bd9 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/systrace/Systrace.kt @@ -31,6 +31,16 @@ public object Systrace { @JvmStatic public fun traceInstant(tag: Long, title: String?, scope: EventScope?): Unit = Unit + @JvmStatic + public fun traceSection(tag: Long, sectionName: String, block: () -> T) { + beginSection(sectionName) + try { + return block() + } finally { + endSection(sectionName) + } + } + @JvmStatic public fun beginSection(tag: Long, sectionName: String) { Trace.beginSection(sectionName)