Small插件化源碼分析--跳轉(zhuǎn)流程

我系蒼王,歡迎關(guān)注的源碼分析的第三節(jié)

歡迎瀏覽我之前的文章钥顽,有興趣可以參考一下义屏,可以給個喜歡或者關(guān)注我的文章,謝謝蜂大。

[Android]如何做一個崩潰率少于千分之三噶應(yīng)用app(9)-Small插件化

Small插件化源碼分析--啟動流程

Small插件化源碼分析--熱更流程


這一節(jié)主要介紹的是Actvity間跳轉(zhuǎn)流程

三.跳轉(zhuǎn)流程

1.很明顯small的跳轉(zhuǎn)是跨模塊的闽铐。

我們可以很容易就找到Small使用的跳轉(zhuǎn)函數(shù),如Small.openUri

我們在第一節(jié)的時候有介紹過奶浦,Small也是使用通用Actvity占坑方法兄墅,來欺騙Android系統(tǒng)啟動的。

makeUri會將跳轉(zhuǎn)封裝為baseUri和uriString

我們看一下openUri澳叉,他會調(diào)用ApplicalicationUtils.openUri

還是會調(diào)用context.startActvity的

2.但并不是這樣就完了隙咸,ApkBundleLauncher里面有InstumentationWrapper沐悦,通過onCreate的方法調(diào)用,它會反射到sInstumentation這個變量五督。

閱讀過Activity啟動流程都會找到藏否,會調(diào)用到Instumentation的execStartActivity的方法,然后才會代理模式代理到Native層運(yùn)行充包。

在這里我們會使用wrapIntent的方法來包裝Intent,這里會把取得realClazz副签,是真正啟動Activity的包名和名字,將realClazz的放到addCategory里面用來傳遞基矮。

調(diào)用dequeStubActivity的方法淆储,來獲取占坑的Activity的名字,以此來欺騙AndroidMaifest注冊的檢測家浇。

?最后還是會通過反射來將該方法反射運(yùn)行

3.通過包裝欺騙后本砰,很明顯,當(dāng)回調(diào)的時候蓝谨,需要將Activity的信息替換回來(這里需要查看一下插件化的源碼分析)灌具,我們之前有提示過有onCreate的時候sCallBack的反射替換

然后通過檢測LAUNCH_ACTIVITY來檢測啟動的流程。

通過拆包unwrapIntent的方法從Category里面獲取會真正的Activity名字

在sLoadedActivities里面獲取會相關(guān)信息譬巫,然后反射替換Activity的信息

替換ActivityInfo的相關(guān)信息

這樣就啟動跳轉(zhuǎn)完成了咖楣,而Activity將會享有本來的Instumentation和自定義的InstumentationWrapper全部生命周期里面的行為。


這一節(jié)就介紹到這里

下一節(jié)將會介紹InstumentaionWrapper究竟做了做了什么事情芦昔。

敬請期待S栈摺!咕缎!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珠十,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凭豪,更是在濱河造成了極大的恐慌焙蹭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫂伞,死亡現(xiàn)場離奇詭異孔厉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帖努,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門撰豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拼余,你說我怎么就攤上這事污桦。” “怎么了匙监?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵凡橱,是天一觀的道長小作。 經(jīng)常有香客問我,道長梭纹,這世上最難降的妖魔是什么躲惰? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮变抽,結(jié)果婚禮上础拨,老公的妹妹穿的比我還像新娘。我一直安慰自己绍载,他們只是感情好诡宗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著击儡,像睡著了一般塔沃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阳谍,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天蛀柴,我揣著相機(jī)與錄音,去河邊找鬼矫夯。 笑死鸽疾,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的训貌。 我是一名探鬼主播制肮,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼递沪!你這毒婦竟也來了豺鼻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤款慨,失蹤者是張志新(化名)和其女友劉穎儒飒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檩奠,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡约素,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了笆凌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡士葫,死狀恐怖乞而,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慢显,我是刑警寧澤爪模,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布欠啤,位于F島的核電站,受9級特大地震影響屋灌,放射性物質(zhì)發(fā)生泄漏洁段。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一共郭、第九天 我趴在偏房一處隱蔽的房頂上張望祠丝。 院中可真熱鬧,春花似錦除嘹、人聲如沸写半。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叠蝇。三九已至,卻和暖如春年缎,著一層夾襖步出監(jiān)牢的瞬間悔捶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工单芜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜕该,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓缓溅,卻偏偏與公主長得像蛇损,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坛怪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,147評論 25 707
  • 我系蒼王淤齐。 這個系列的課程都是時下最熱門的開源框架的源碼分析。 今次為大家?guī)淼氖荢mall的源碼分析 一個源碼代...
    CangWang閱讀 1,504評論 4 11
  • 2016-2017年是插件化遍地開花的一年袜匿,各家大廠都開源了自己的插件化框架更啄、熱修復(fù)技術(shù),網(wǎng)上也已經(jīng)有許多介紹和分...
    Geek帆哥閱讀 2,822評論 2 9
  • 相關(guān)閱讀 插件化知識梳理(1) - Small 框架之如何引入應(yīng)用插件插件化知識梳理(2) - Small 框架之...
    澤毛閱讀 1,407評論 2 9
  • 歌曲:梵高先生 外文名稱:Mr.fan gao 歌手:李志 歌詞: 誰的父親死了 請你告訴我如何悲傷 誰的愛人走了...
    RainyCai閱讀 544評論 0 1