Module AppRegistry is not a registered callable module (calling runApplication)的解决思路

Module AppRegistry is not a registered callable module (calling runApplication)

这个错误比较少的遇到,如遇到你可能进行了bundle的升级加载相关,来简单看一下bundle加载后的流程:

当bundle文件被加载后,即执行AppRegistry.js中的,即会被直接注册到CallableModule队列中,CallableModule是RN内置的Java调用在JS中的的类,一般为AppRegistry.js(入口文件),和RCTEventEmitter(关于事件分发)的类。在Java中的,由于一些bussness模块是自启动(或者说是后台运行),加载完之后会执行CatalystInstance.getJSModule(AppRegistry.class).runApplication("JJApp", new WritableNativeMap),有可能在这个过程中CallableModule的状态会被重置,造成异常。所以在这个过程中同时执行重新加载bundle(或者说reCreateRNContext)会造成异常。如果几秒一个周期反复reCreateRNContext,还有可能会造成runApplication的时候CatalystInstance实例对象为空,或Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {9a12653} sending message to a Handler on a dead thread等异常情况。

BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);

解决方案:

1.在AppRegistry.runApplication的时候避免重新加载bundle重置RNContext环境

2.在加载bundle的时候加状态,不要进行AppRegistry.runApplication,因为重新加载后依然会执行AppRegistry.runApplication

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值