天天看點

有限狀态機(StateMachine)學習總結

狀态機定義

有限狀态機,是表示有限個狀态以及在這些狀态之間的轉移和動作等行為的數學模型。

狀态機他解決的問題是,在一個系統(比如電梯),系統運作時有多個狀态,在狀态、事件間切換。

另外一個方面是狀态之間的層級關系,如果電梯上行,必須先檢查是否關門,如果沒有,那麼發送關門資訊。

下圖是短信發送狀态機的結構圖:

有限狀态機(StateMachine)學習總結

在這個圖中,預設狀态是全局父狀态,它下面的子狀态分别是,啟動狀态、空閑狀态、傳輸狀态;傳輸狀态的子狀态是等待狀态。下面詳細說明各狀态所作的事情。

預設狀态:當本狀态接受到EVENT_UPDATE_PHONE_OBJECT消息後,更新Phone對象(onUpdatePhoneObject((Phone) msg.obj););

啟動狀态:當消息EVENT_NEW_SMS、EVENT_INJECT_SMS、EVENT_BROADCAST_SMS将他們存儲到狀态機消息隊列中,讓其他狀态去處理,最終會交給傳輸狀态處理。

空閑狀态:将消息EVENT_NEW_SMS、EVENT_INJECT_SMS、EVENT_BROADCAST_SMS緩存,并切換到傳輸狀态。

傳輸狀态:處理短信的發送,短信廣播發送等。

等待狀态:當EVENT_BROADCAST_SMS,緩存消息,當 EVENT_BROADCAST_COMPLETE時發生消息EVENT_RETURN_TO_IDLE,切換到空閑狀态。

Android 狀态機實作分析

源碼在Google伺服器。未翻牆時可以通路我的Github。

繼續閱讀