mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-05-03 23:35:06 +08:00
Create UIManager interface and extract common classes in uimanager/common
Reviewed By: achen1 Differential Revision: D7102674 fbshipit-source-id: e14b6782ad102ec1c3d37988df4bbd4190511f09
This commit is contained in:
committed by
Facebook Github Bot
parent
b181b7797f
commit
6b45fb2cb1
@@ -27,5 +27,6 @@ rn_android_library(
|
||||
react_native_target("java/com/facebook/debug/holder:holder"),
|
||||
react_native_target("java/com/facebook/react/common:common"),
|
||||
react_native_target("java/com/facebook/react/module/model:model"),
|
||||
react_native_target("java/com/facebook/react/uimanager/common:common"),
|
||||
] + ([react_native_target("jni/react/jni:jni")] if not IS_OSS_BUILD else []),
|
||||
)
|
||||
|
||||
@@ -9,6 +9,6 @@ public interface BridgeListener {
|
||||
* Called right after the RN Bridge is initialized
|
||||
* @param catalystInstance {@link CatalystInstance} bridge
|
||||
*/
|
||||
void onBridgeStarted(CatalystInstance catalystInstance);
|
||||
void onBridgeStarted(ReactApplicationContext reactApplicationContext, CatalystInstance catalystInstance);
|
||||
|
||||
}
|
||||
|
||||
@@ -98,4 +98,8 @@ public interface CatalystInstance
|
||||
* synchronized(jsContext) { nativeThingNeedingJsContext(jsContext.get()); }
|
||||
*/
|
||||
JavaScriptContextHolder getJavaScriptContextHolder();
|
||||
|
||||
<T extends UIManager> void setFabricUIManager(T fabricUIManager);
|
||||
|
||||
<T extends UIManager> T getFabricUIManager();
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
private volatile boolean mAcceptCalls = false;
|
||||
|
||||
private boolean mJSBundleHasLoaded;
|
||||
private UIManager mFabricUIManager;
|
||||
private @Nullable String mSourceURL;
|
||||
|
||||
private JavaScriptContextHolder mJavaScriptContextHolder;
|
||||
@@ -98,8 +99,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
final JavaScriptExecutor jsExecutor,
|
||||
final NativeModuleRegistry nativeModuleRegistry,
|
||||
final JSBundleLoader jsBundleLoader,
|
||||
NativeModuleCallExceptionHandler nativeModuleCallExceptionHandler,
|
||||
final BridgeListener bridgeListener) {
|
||||
NativeModuleCallExceptionHandler nativeModuleCallExceptionHandler) {
|
||||
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge.");
|
||||
mHybridData = initHybrid();
|
||||
|
||||
@@ -125,9 +125,6 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge after initializeBridge");
|
||||
|
||||
mJavaScriptContextHolder = new JavaScriptContextHolder(getJavaScriptContext());
|
||||
if (bridgeListener != null) {
|
||||
bridgeListener.onBridgeStarted(this);
|
||||
}
|
||||
}
|
||||
|
||||
private static class BridgeCallback implements ReactCallback {
|
||||
@@ -456,6 +453,14 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
return mJavaScriptContextHolder;
|
||||
}
|
||||
|
||||
public UIManager getFabricUIManager() {
|
||||
return mFabricUIManager;
|
||||
}
|
||||
|
||||
public void setFabricUIManager(UIManager fabricUIManager) {
|
||||
mFabricUIManager = fabricUIManager;
|
||||
}
|
||||
|
||||
private native long getJavaScriptContext();
|
||||
|
||||
private void incrementPendingJSCalls() {
|
||||
@@ -555,7 +560,6 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
private @Nullable NativeModuleRegistry mRegistry;
|
||||
private @Nullable JavaScriptExecutor mJSExecutor;
|
||||
private @Nullable NativeModuleCallExceptionHandler mNativeModuleCallExceptionHandler;
|
||||
private @Nullable BridgeListener mBridgeListener;
|
||||
|
||||
|
||||
public Builder setReactQueueConfigurationSpec(
|
||||
@@ -585,20 +589,13 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setBridgeListener(
|
||||
BridgeListener listener) {
|
||||
mBridgeListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
public CatalystInstanceImpl build() {
|
||||
return new CatalystInstanceImpl(
|
||||
Assertions.assertNotNull(mReactQueueConfigurationSpec),
|
||||
Assertions.assertNotNull(mJSExecutor),
|
||||
Assertions.assertNotNull(mRegistry),
|
||||
Assertions.assertNotNull(mJSBundleLoader),
|
||||
Assertions.assertNotNull(mNativeModuleCallExceptionHandler),
|
||||
mBridgeListener);
|
||||
Assertions.assertNotNull(mNativeModuleCallExceptionHandler));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.facebook.react.bridge;
|
||||
|
||||
import com.facebook.react.uimanager.common.MeasureSpecProvider;
|
||||
import com.facebook.react.uimanager.common.SizeMonitoringFrameLayout;
|
||||
|
||||
public interface UIManager {
|
||||
|
||||
/**
|
||||
* Registers a new root view.
|
||||
*/
|
||||
<T extends SizeMonitoringFrameLayout & MeasureSpecProvider> int addRootView(final T rootView);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user