diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java index 9474e2396d4..a653763be6d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java @@ -36,6 +36,7 @@ public class DevInternalSettings private static final String PREFS_INSPECTOR_DEBUG_KEY = "inspector_debug"; private static final String PREFS_HOT_MODULE_REPLACEMENT_KEY = "hot_module_replacement"; private static final String PREFS_REMOTE_JS_DEBUG_KEY = "remote_js_debug"; + private static final String PREFS_SAMPLING_PROFILER_ENABLED = "sampling_profiler_enabled"; private final SharedPreferences mPreferences; private final Listener mListener; diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index 9d101741a48..0fea0516b9f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -95,6 +95,9 @@ public class DevSupportManagerImpl private static final int JSEXCEPTION_ERROR_COOKIE = -1; private static final String JS_BUNDLE_FILE_NAME = "ReactNativeDevBundle.js"; private static final String RELOAD_APP_ACTION_SUFFIX = ".RELOAD_APP_ACTION"; + private static final String ENABLE_SAMPLING_PROFILER = ".ENABLE_SAMPLING_PROFILER"; + private static final String DISABLE_SAMPLING_PROFILER = ".DISABLE_SAMPLING_PROFILER"; + private boolean mIsSamplingProfilerEnabled = false; private enum ErrorType { JS, @@ -543,6 +546,24 @@ public class DevSupportManagerImpl } } }); + options.put( + mIsSamplingProfilerEnabled + ? mApplicationContext.getString(R.string.catalyst_sample_profiler_disable) + : mApplicationContext.getString(R.string.catalyst_sample_profiler_enable), + new DevOptionHandler() { + @Override + public void onOptionSelected() { + Intent intent = + new Intent( + mApplicationContext.getPackageName() + + (mIsSamplingProfilerEnabled + ? DISABLE_SAMPLING_PROFILER + : ENABLE_SAMPLING_PROFILER)); + mApplicationContext.sendBroadcast(intent); + mIsSamplingProfilerEnabled = !mIsSamplingProfilerEnabled; + } + }); + options.put( mDevSettings.isFpsDebugEnabled() ? mApplicationContext.getString(R.string.catalyst_perf_monitor_stop) diff --git a/ReactAndroid/src/main/res/devsupport/values/strings.xml b/ReactAndroid/src/main/res/devsupport/values/strings.xml index 750b8acffed..82db0a9b7ec 100644 --- a/ReactAndroid/src/main/res/devsupport/values/strings.xml +++ b/ReactAndroid/src/main/res/devsupport/values/strings.xml @@ -26,4 +26,6 @@ Copy\n Report Loading from %1$s… + Disable Sampling Profiler + Enable Sampling Profiler