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