`
dingran
  • 浏览: 371627 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android的状态机模式StateMachine与State

 
阅读更多

偶尔看到StateMachine,这东西在Android中比较完美。

 

       StateMachine是一个层次状态机(hierarchical state machine):一个状态可以有多个子状态的状态机。状态机中的状态须继承基类State,并实现成员函数processMessage,从而对收到的 Message进行处理;其它可选实现的成员函数为enter()、exit()和getName()。函数enter和exit相当于面向对象编程里的 “状态”的构造和析构函数。函数getName用于返回状态的名称,多用于调试目的。

状态机有多少子状态,可在构建状态机时,使用addState(State state, State parent)来添加所有的子状态,构建出一个层次状态关系。初始状态可由setInitialState函数指定。 使用者应调用StateMachine的start函数让状态机进入工作状态:初始化状态堆栈,调用初始状态(包括其父状态)的enter函数等。

 

      摘自:http://www.redwolf-blog.com/?p=1021

 

1.找到一篇描述怎么使用状态机的文章,讲的很详细,还有例子代码:

 应该是分析了StateMachine.java的注释之后翻译的,附件中放了这个类,以及State.java和IState.java

Android StateMachine分析

http://blog.csdn.net/lele_cheny/article/details/9289905

2.关于原理和源码分析请参考这篇文章:

Android学习 StateMachine与State模式

http://www.cnblogs.com/bastard/archive/2012/06/05/2536258.html

 

讲的很清晰,但是对于我来说,还不太明白使用的方式,以及内部存储的状态几点怎么就用map来完成了tree的存储呢?以后还得继续研究研究。

 

3.这篇文章讲述的不是很清晰,但是分析了源码过程比较仔细:

android状态机机制StateMachine

http://blog.csdn.net/myxmu/article/details/7917451

 

4.最后看到有本书里面讲述了这个内容:

 

深入理解Android:Telephony原理剖析与最佳实践

对应章节信息:

第8章 android手机上网实现机制 / 204 
8.1 android网络整体结构 / 204 
8.2 什么是dataconnection / 205 
8.2.1 dataconnection类定义及子类 / 205 
8.2.2 dataconnection类关键属性 / 206 
8.2.3 dataconnection类的方法 / 207 
8.2.4 5个数据连接对象的状态转换 / 207 
8.3 statemachine状态机 / 208 
8.3.1 state设计模式 / 209 
8.3.2 statemachine核心类 / 209 
8.3.3 statemachine运行机制 / 210 
8.3.4 dataconnection使用state模式的运行机制 / 211 
8.4 什么是apn / 212 

 好嘛,好久没买书了,又该去西单了,哈哈。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics