HierarchicalStateMachine(HandlerStateMachine)分析
来源:互联网 发布:godaddy如何购买域名 编辑:程序博客网 时间:2024/06/09 19:13
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分析详细分析
- 母函数详解
- 6.087 Practical Programming in C, lec5: Pointers and memory addressing
- 验证证书的过程
- ARCGIS DESKTOP 9.3 安装破解完整清晰步骤
- spring事务的传播行为与隔离级别
- HierarchicalStateMachine(HandlerStateMachine)分析
- joj1424
- android要把用到的activity写在AndroidManifest.xml中,否则程序异常退出
- 100个Java经典例子(31-40)初学者的利器高手的宝典JavaSE
- 基于 mysqli 的 Model基类
- C++ 点滴积累(4)
- 看看能不能看到我的博客
- linux wait函数用法
- joj1583