本文主要是介绍蓝牙之三-StateMachine,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
蓝牙和wifi的管理上都使用到了状态机。
该状态机属于分层状态机管理消息。一个状态对应于一个<State>对象,并且状态必须实现<processMessage>方法,可选的实现方法是<enter/exit/getName>,<enter/exit>方法对应于构造和析构函数,它们被用于初始化和清理状态。<getName>方法返回状态的名称,缺省的方式是返回返回类名称,但是也许返回实例的名称是使用者更想要的方式,尤其是一个状态类具有多个实例的时候。
当状态机使用创建后,<addState>方法用于创建状态层次,<setInitialState>用于标识哪些是初始的状态。构造完成后程序调用<start>方法用于初始化和启动状态机。状态机的第一个动作是为所有的状态层次(从最原始的父类开始)调用<enter>方法。这在处理任何消息之前完成。如下的mP1.enter将唤醒mS1.enter。最中发送该状态的的信息被当前状态处理,也就是被<mS1.processMessage>方法。
mP1/ \mS2 mS1 ----> initial state
在状态机被创建和启动后,消息的创建方法是<obtainMessage>,消息的发送方法是<sendMessage>。当状态机接收到一个消息时,当前状态的<processMessage>方法将被调用,在上面的例子中,mS1.processMessage将被首先唤醒,该状态可使用<transitionTo>方法将当前状态切换到一个新状态。
状态机中
这篇关于蓝牙之三-StateMachine的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!