gpt4 book ai didi

android - 除了 Android 上的 React Native,iOS 上是否有类似 RCTBridge React Native 的东西?

转载 作者:太空狗 更新时间:2023-10-29 13:15:09 26 4
gpt4 key购买 nike

在我工作的地方,我们试图以一种稍微不标准的方式使用 React Native。我们不想将它用于 View ,而只是将它用于运行 java 代码的能力,以允许我们使用 Java、Swift/Objective-c 在 js 和 Android iOS 和 Web 前端创建所有业务逻辑,和Javascript分别。

我们正在 iOS 中做这样的事情:

NSURL *bundleURL = ...;
RCTBridgeModuleProviderBlock block = nil;
NSDictionary *launchOptions = nil;
RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:bundleURL moduleProvider:block launchOptions:nil];

我们的 iOS 开发人员能够创建一个 RCTBridge,然后他使用它与来自 objective-c 的 JS 代码进行通信。他计划在应用程序的整个生命周期内坚守这座桥梁。我在 Android/Java 上找不到类似的东西。我确实让 ReactInstanceManager 像下面这样工作:

mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage( searchPackage )
.setUseDeveloperSupport( BuildConfig.DEBUG )
.setInitialLifecycleState( LifecycleState.RESUMED)
.build();

mReactInstanceManager.createReactContextInBackground();

与 ReactInstanceManager 连接起来的烦人之处在于它需要一些生命周期回调,这有点让它与特定 Activity 相关联。我想做 iOS 正在做的事情并创建一个桥梁,并为整个应用程序跨多个不同的 Activity 保留该实例。

那么在iOS中有没有类似RCTBridge的存在呢?如果不是,那么我不应该在多个 Activity 中共享同一个 reactInstanceManager 的原因是什么?

最佳答案

The docs state只要将 ReactInstanceManager 连接到 Activity 生命周期方法,您就可以将 ReactInstanceManager 保持为单例并在多个 Activity 中使用它。

不过,我发现这种方法存在一个问题。在 Android 上,如果您的 Activity 扩展了基础 ReactNative Activity ,则 ReactInstanceManager 会获得 destroyed当调用 onDestroy() 时。因此,如果您从 MainActivity 打开第二个 Activity - 一旦返回到您的 MainActivitymReactInstanceManager 就会失效,您的单例基本上毫无值(value)。

我打开了一个 issue关于这个。

关于android - 除了 Android 上的 React Native,iOS 上是否有类似 RCTBridge React Native 的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com