From c6b4eb7dcf638e4f9b9b2add4e4306f93ad887f0 Mon Sep 17 00:00:00 2001 From: Emily Janzer Date: Mon, 6 May 2019 15:41:17 -0700 Subject: [PATCH] Move message queue initialization in ReactContext into its own method Summary: Refactoring ReactContext to move message queue initialization into its own function that can be called independently of initializeWithInstance. This allows you to create a ReactContext with message queue threads without a CatalystInstance. Reviewed By: mdvacca Differential Revision: D14817741 fbshipit-source-id: f314a526c6534792714e5ba55dd873f1728c6b9f --- .../facebook/react/bridge/ReactContext.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index d07d4ae28..c9ce7e56e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -65,9 +65,21 @@ public class ReactContext extends ContextWrapper { mCatalystInstance = catalystInstance; ReactQueueConfiguration queueConfig = catalystInstance.getReactQueueConfiguration(); - mUiMessageQueueThread = queueConfig.getUIQueueThread(); - mNativeModulesMessageQueueThread = queueConfig.getNativeModulesQueueThread(); - mJSMessageQueueThread = queueConfig.getJSQueueThread(); + initializeMessageQueueThreads(queueConfig); + } + + /** + * Initialize message queue threads using a ReactQueueConfiguration. + * TODO (janzer) T43898341 Make this package instead of public + */ + public void initializeMessageQueueThreads(ReactQueueConfiguration queueConfig) { + if (mUiMessageQueueThread == null && mNativeModulesMessageQueueThread == null && mJSMessageQueueThread == null) { + mUiMessageQueueThread = queueConfig.getUIQueueThread(); + mNativeModulesMessageQueueThread = queueConfig.getNativeModulesQueueThread(); + mJSMessageQueueThread = queueConfig.getJSQueueThread(); + } else { + throw new IllegalStateException("Message queue threads already initialized"); + } } public void resetPerfStats() {