RN(React Native)
源碼地址: https://github.com/facebook/react-native
簡介
本文主要講述RN在Android系統(tǒng)上是如何進(jìn)行初始化,介紹也會(huì)集中在Java語言上
1. 主要類介紹
1.1 ReactContext
ReactContext繼承于ContextWrapper,是RN應(yīng)用的上下文,可以通過getContext()方法或側(cè),通過它可以訪問RN核心類的實(shí)現(xiàn)。
1.2 ReactNativeHost
RN的配置類,用于設(shè)定JSBundleFile,BundleAssetName,Dev環(huán)境,RedBox,JSMainModuleName等信息,最重要的是它擁有一個(gè)ReactInstanceManager的實(shí)例對(duì)象,可以用來管理RN的很多操作;
1.3 ReactInstanceManager
ReactInstanceManager是RN應(yīng)用的總管理類,創(chuàng)建ReactContext、CatalystInstance等類,解析ReactPackage生成映射表,并且配合ReactRootView管理View的創(chuàng)建以及生命周期等功能;
1.4 CatalystInstance
CatalystInstance是RN的應(yīng)用Java層,C++層,JS層通訊總管理類,總管Java層,JS層和諧Module映射表與回調(diào),是三端通訊的入口與橋梁
1.5 ReactActivity和ReactFragmentActivity
RN繼承Android原生的Activity,用來設(shè)置Activity的內(nèi)容,創(chuàng)建代理類ReactActivityDelegate,載入RN頁面loadAPP
1.6 ReactActivityDelegate
RN相關(guān)Activity的代理類,從創(chuàng)建ReactRootView,設(shè)置上下文, 生命周期的控制,到載入loadAPP;可以通過繼承自定義代理類,再賦值給RN的Activity,可以帶上Android的Bundle作為參數(shù)直接傳遞給JS層
1.7 ReactRootView
顧名思義,就是RN的主view,JS代碼的Component設(shè)置的UI最終都顯示到這個(gè)類中,同時(shí)還復(fù)寫了onTouchEvent和onInterceptTouchEvent,用于分發(fā)事件到JS
2. 調(diào)用順序圖
圖片為思維導(dǎo)圖,大致從上往下調(diào)用,類之間通過箭頭指向調(diào)用;
