在android中,當點選某個rn子產品的入口按鈕,彈出rn的activity到rn的頁面展現出來的過程中,會有很明顯的白屏現象,不同的機型不同(cpu好的白屏時間短),大概1s到2s的時間。
注意,隻有在真機上才會有此現象,在模拟器上沒有此現象完全是秒開。
通過工具分析,問題主要在下面的代碼上,
ReactActivity的onCreate()的完整代碼如下:
知道了産生問題的原因,我們就知道怎麼着手優化了。我們首先想到的:-記憶體換時間
步驟一:
緩存rootview管理器主要用于初始化和緩存rootview對象。
步驟二
重寫ReactActivity,可以拷貝出來改,也可以繼承寫,主要是重寫onCreate和onDestroy,其餘代碼不動。onCreate方法中使用緩存rootview管理器來獲得rootview對象,而不是重新建立。
onCreate()代碼
onDestroy方法中,不能再調用原有的mReactInstanceManager.destroy()方法了,否則rn初始化出來的對象會被銷毀,下次就用不了了。同時,要解除安裝掉rootview的parent對象,否則下次再setContentView時候回報錯。
RNCacheViewManager的onDeatory代碼
步驟三
在app啟動時候初始化緩存rootview管理器。
RnInfo實體類代碼: