您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Android的狀態(tài)有什么用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android的狀態(tài)有什么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
狀態(tài)可以有一個(gè)入口行為。如果定義了這個(gè)行為,每當(dāng)通過(guò)外部遷移進(jìn)入狀態(tài)的時(shí)候它就會(huì)被執(zhí)行。另外,狀態(tài)也可以有一個(gè)關(guān)聯(lián)的退出行為,如果被定義了這個(gè)行為,每當(dāng)狀態(tài)退出的時(shí)候它就會(huì)被執(zhí)行。
狀態(tài)也可以擁有一個(gè)doActivity行為。這個(gè)行為在狀態(tài)進(jìn)入時(shí)開(kāi)始執(zhí)行(但必須在狀態(tài)入口行為執(zhí)行結(jié)束之后)并且和其他任何與狀態(tài)關(guān)聯(lián)的行為同時(shí)執(zhí)行。直到:
· it completes (in which case a completion event is generated) or
它自己結(jié)束了(這種情況下會(huì)生成一個(gè)完了事件)
· the State is exited, in which case execution of the doActivity Behavior is aborted.
狀態(tài)退出了,這種情況下doActivity行為的執(zhí)行被中斷。
The execution of a doActivity Behavior of a State is not affected by the firing of an internal Transition of that State.
狀態(tài)的doActivity行為的執(zhí)行不會(huì)被狀態(tài)的內(nèi)部遷移觸發(fā)。
歷史狀態(tài)
歷史狀態(tài)的概念是被DavidHarel引入到原始的狀態(tài)圖體系中來(lái)的。這是一個(gè)與組合狀態(tài)中區(qū)域有關(guān)的便利的概念,通過(guò)這個(gè)概念一個(gè)區(qū)域可以保持自己前一次退出時(shí)的狀態(tài)構(gòu)成的痕跡。如果愿意,就可以以一種容易的方式在下次狀態(tài)被激活,或者存在一個(gè)返回歷史狀態(tài)的局部遷移時(shí)恢復(fù)到同樣的狀態(tài)構(gòu)成(例如從中斷處理返回)。這可以通過(guò)使遷移終止于一個(gè)區(qū)域中的希望類型的歷史偽狀態(tài)而簡(jiǎn)單地完成。這種方式的優(yōu)點(diǎn)在于,當(dāng)用戶有需求時(shí)不需要準(zhǔn)確地保持狀態(tài)構(gòu)成的痕跡。結(jié)果就是更加簡(jiǎn)單的狀態(tài)機(jī)模型。
有兩種類型的歷史偽狀態(tài)。深歷史(deepHistory)代表的是包含它的區(qū)域的完整的狀態(tài)構(gòu)成。其效果使終止于deepHistory歷史偽狀態(tài)的遷移產(chǎn)生的效果等同于如同遷移終止于被保存的狀態(tài)構(gòu)成的最里層中的某個(gè)子狀態(tài),也包括沿途遇到的所有入口行為的執(zhí)行。淺歷史(shallowHistory)代表的是返回最近狀態(tài)構(gòu)成的最上層子狀態(tài),進(jìn)入時(shí)適用于缺省的進(jìn)入規(guī)則。
有一種情況,狀態(tài)沒(méi)有被進(jìn)入過(guò)(即不存在之前的歷史)或者已經(jīng)到達(dá)了終止?fàn)顟B(tài),如果存在與終止于歷史偽狀態(tài)上的遷移,可以使用缺省歷史機(jī)制使之強(qiáng)制遷移到一個(gè)特定的子狀態(tài)。這是一個(gè)起始于歷史偽狀態(tài),終止于包含該歷史偽狀態(tài)的區(qū)域中的一個(gè)特定頂點(diǎn)(缺省歷史狀態(tài))的遷移。這個(gè)遷移只有執(zhí)行到歷史偽狀態(tài)而且狀態(tài)從來(lái)沒(méi)有被激活過(guò)的情況下才會(huì)發(fā)生。否則進(jìn)入?yún)^(qū)域的適當(dāng)?shù)臍v史入口行為將被執(zhí)行(見(jiàn)上文)。如果沒(méi)有定義缺省的歷史遷移,那么標(biāo)準(zhǔn)的區(qū)域缺省入口行為會(huì)像后面將要解釋的那樣被執(zhí)行。
延期事件
狀態(tài)可以定義一套在該狀態(tài)中被延遲的時(shí)間類型。這意味著只要狀態(tài)維持活動(dòng),那些類型的事件就不會(huì)發(fā)生,直到:
一個(gè)狀態(tài)構(gòu)成到達(dá)了這些事件類型不在被延遲的位置。
如果一個(gè)延遲事件被明確地用在了以延遲狀態(tài)(一種覆蓋選項(xiàng))為源的遷移的觸發(fā)條件中。
一個(gè)事件可以被組合狀態(tài)或子狀態(tài)機(jī)狀態(tài)延遲,只要組合狀態(tài)仍處于活動(dòng)的狀態(tài)構(gòu)成中,它就繼續(xù)被延遲。
讀到這里,這篇“Android的狀態(tài)有什么用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。