diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index 011a4d324..0daf8e9c7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -83,6 +83,7 @@ public class DevServerHelper { public interface PackagerCommandListener { void onPackagerReloadCommand(); + void onCaptureHeapCommand(); } public interface PackagerStatusCallback { @@ -123,8 +124,12 @@ public class DevServerHelper { new JSPackagerWebSocketClient.JSPackagerCallback() { @Override public void onMessage(String target, String action) { - if (commandListener != null && "bridge".equals(target) && "reload".equals(action)) { - commandListener.onPackagerReloadCommand(); + if (commandListener != null && "bridge".equals(target)) { + if ("reload".equals(action)) { + commandListener.onPackagerReloadCommand(); + } else if ("captureHeap".equals(action)) { + commandListener.onCaptureHeapCommand(); + } } } }); 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 c7288d5f0..d8091f7f5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -417,9 +417,7 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand new DevOptionHandler() { @Override public void onOptionSelected() { - JSCHeapCapture.captureHeap( - mApplicationContext.getCacheDir().getPath(), - JSCHeapUpload.captureCallback(mDevServerHelper.getHeapCaptureUploadUrl())); + handleCaptureHeap(); } }); options.put( @@ -691,6 +689,22 @@ public class DevSupportManagerImpl implements DevSupportManager, PackagerCommand }); } + @Override + public void onCaptureHeapCommand() { + UiThreadUtil.runOnUiThread(new Runnable() { + @Override + public void run() { + handleCaptureHeap(); + } + }); + } + + private void handleCaptureHeap() { + JSCHeapCapture.captureHeap( + mApplicationContext.getCacheDir().getPath(), + JSCHeapUpload.captureCallback(mDevServerHelper.getHeapCaptureUploadUrl())); + } + private void updateLastErrorInfo( final String message, final StackFrame[] stack,