HierarchicalStateMachine(HandlerStateMachine)分析
来源:互联网 发布:数据监控系统 编辑:程序博客网 时间:2024/05/24 07:19
HierarchicalStateMachine源代码参照:
http://blog.chinaunix.net/space.php?uid=17151843&do=blog&id=142162
3. HierarchicalStateMachine是一个机器,这个机器是含有状态的机器,
机器的每个状态都可以有父状态,如果当前状态需要父状态作处理, 那么让该状态的processMessage返回false
4. 当前状态和它的父状态们放在mStateStack数组中,active是用来记录StateInfo包含的state是否是active,在后面计算当前状态和目标状态的共同父状态过程中使用。
所有状态和状态的StateInfo的键值对存放在HashMap mStateInfo中。
/** The map of all of the states in the state machine */
private HashMap<HierarchicalState, StateInfo> mStateInfo =
new HashMap<HierarchicalState, StateInfo>();
/** Stack used to manage the current hierarchy of states */
private StateInfo mStateStack[];
5. 转换状态:performTransitions()
a. 寻找当前状态和目标状态的共同父状态,从目标状态开始循环查询父状态的active是否是true,如果是active,说明是当前状态和目标状态的父状态,并依次放入数组mTempStateStack中。
b. 从当前状态到共同父状态(不包括本身)依次调用exit,并将active设置为false,将mStateStackTopIndex设置成mStateStack数组的个数。
c. 反序将mTempStateStack中的元素拷贝到mStateStack中,并重新设置mStateStackTopIndex,并返回第一个需要调用enter的state的index startingIndex
d. 从共同父状态到目标状态依次调用enter
e. 移动ArrayLiist mDeferredMessages中的deffered message, 从尾部开始将message加入到MessageQueue中的第一个,这样,最先加入mDeferredMessages中的Message第一个得到执行。并且deffered message比普通Message先执行。
- HierarchicalStateMachine(HandlerStateMachine)分析
- HierarchicalStateMachine(HandlerStateMachine)分析
- HierarchicalStateMachine(HandlerStateMachine)分析
- HierarchicalStateMachine源代码
- HierarchicalStateMachine.java
- android中的一个层次状态机:HierarchicalStateMachine(A2DP)
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 大家帮忙分析分析!
- FFMpeg分析详细分析
- FFMpeg分析详细分析
- java 将远程共享的文件复制到本地
- tomcat在win7下面启动的问题。 郁闷了半天。 多亏了这位大哥。
- BouncyCastle JCE 的安装配置及在java中的使用
- shareperference使用
- 如何结合CoreData给UITableView的section填充数据
- HierarchicalStateMachine(HandlerStateMachine)分析
- 什么是极性反转 polarity reversal
- hbase 结点之间时间不一致造成regionserver启动失败
- 手动修改/etc/shadow和/etc/passwd中的用户密码
- 【转载】会议是浪费工作时间的最佳去处
- jQuery数组处理详解
- 20130324
- 谨慎验证码识别 还游戏账号一个安全的环境
- iOS -- Protocol Buffers 应用于 iOS 的尝试