RN应用的启动流程

概念介绍:

  • ReactContext:继承自ContextWrapper,是ReactNative应用的上下文
  • ReactInstanceManager: 是ReactNative应用的管理类,负责创建ReactContext,CatalystInstance等。
  • CatalystInstance:Java层、C++层、JS层通信总管理,管理Java层、JS层核心Module映射表和回调,三端通信的入口于桥梁

RN应用的启动流程如下图所示:

image.png

详细流程:

  1. 在程序启动的时候,也就是在ReactActivity的onCreate()方法中,我们创建一个ReactInstanceManager对象
  2. 创建ReactRootView(FrameLayout)调用ReactRootView.startReactApplication()方法启动应用
  3. 在异步任务ReactContextInitAsyncTask中,创建ReactContext
  4. 在异步任务中,完成如下工作:
  • 根据ReactPackage,创建JavaScriptModuleRegistry和NativeModuleRegistry注册表
  • 创建管理类CatalystInstanceImpl
  • 创建JS、Native、与UI线程队列
  • 调用CatalystInstanceImpl.runJsBundle()加载JS bundle
  1. 后台任务执行完成后,会调用ReactInstanceManager.setupReactContext()设置创建好的ReactContext,并将ReactRootView加载进去
  2. 调用RN应用的JS入口AppRegistry来启动应用
  3. JS层找到已经注册的启动组件,执行renderApplication来渲染整个应用

PS:

  • 实际开发中,一般会写一个单例来获取ReactInstanceManger,多个ReactFragment和ReactActivity可以共享一个ReactInstanceManager
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容