W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
doStart
:執(zhí)行 start 階段的起始標(biāo)志。ContextEvent_Started
:通過(guò)事件機(jī)制發(fā)送 AppContext#ContextEvent_Started
事件。doStartCompleted
:執(zhí)行 start 階段的終止標(biāo)志。
如一開(kāi)始在 0. 生命周期
小結(jié)中所介紹,Start 階段一共有三個(gè)擴(kuò)展點(diǎn)(0.生命周期:圖右側(cè))它們分別是 ContextStartListener
接口的 doStart
、doStartCompleted
方法,以及 LifeModule 接口的 onStart
方法。
下面這張圖為我們展現(xiàn)了這三個(gè)節(jié)點(diǎn)對(duì)我們的重要意義。
對(duì)于框架而言,加載 LifeModule
的先后順序沒(méi)有多大重要性,但是對(duì)于開(kāi)發(fā)者而言可能有著很重要的意義,例如:先初始化數(shù)據(jù)庫(kù)連接,在創(chuàng)建測(cè)試數(shù)據(jù)。我們知道通常在同一個(gè)應(yīng)用中,創(chuàng)建數(shù)據(jù)庫(kù)連接的 Module 和 創(chuàng)建測(cè)試數(shù)據(jù)的 Module 它們的加載順序我們是可以控制的。但是當(dāng)引入一個(gè)基于 Hasor Module 的第三方組件時(shí)。我們就無(wú)法保證 Module 的加載順序,因?yàn)榭蚣懿粫?huì)對(duì)它們進(jìn)行排序的,同時(shí)開(kāi)發(fā)者也無(wú)法進(jìn)行控制。
這時(shí)候 ContextStartListener
接口的兩個(gè)方法就會(huì)為我們提供一些幫助。這一組方法執(zhí)行的時(shí)機(jī)相當(dāng)于給所有 LifeModule
在執(zhí)行它們的 onStart
方法前后加了一個(gè)大的全局?jǐn)r截器。
嚴(yán)格意義上說(shuō),ContextStartListener 的設(shè)計(jì)初衷并不是給業(yè)務(wù)系統(tǒng)準(zhǔn)備的。但當(dāng)您被此類問(wèn)題困擾時(shí)候,可以嘗試使用這個(gè)接口來(lái)解決問(wèn)題。當(dāng)然這個(gè)接口也不是萬(wàn)能的,它也有一些限制。
LifeModule
執(zhí)行 onStart 之前執(zhí)行,但是它依然無(wú)法控制 LifeModule 具體的執(zhí)行順序。LifeModule
被加載。同樣的 ContextShutdownListener
也無(wú)法知道哪些 LifeModule 沒(méi)有成功執(zhí)行 onStop。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: