偶尔看到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
好嘛,好久没买书了,又该去西单了,哈哈。
相关推荐
Android中StateMachine机制 ...这种在处理多状态较为复杂的大部分场景都能见到的策略——状态机(StateMachine) 。在Android中使用的了StateMachine机制就是一个State模式的应用, StateMachine是非常的强大和精妙。
StateMachine - 用于有限状态机的Kotlin DSL
工作中有一同事说到Android状态机StateMachine。作为一名Android资深工程师,我居然没有听说过StateMachine,因此抓紧时间学习一下。 StateMachine不是Android SDK中的相关API,其存在于frameworks层源码中的一个...
Android StateMachine 参考学习代码,可直接运行,对初级了解状态机运行过程有帮助
工作中有一同事说到的Android状态机StateMachine 。作为一名Android的资深工程师,我居然没有听说过StateMachine ,因此抓紧时间学习一下。 StateMachine不是Android SDK中的相关API,其存在于frameworks层源码中的...
Android的状态机 Android的轻量级状态机实现。 下载 通过gradle。 在main build.gradle中: allprojects { repositories { .. . maven { url " https://oss.sonatype.org/content/repositories/snapshots " }...
Android WiFi状态机相关源码整理,包括IState,State,StateMachine,WifiController,WifiStateMachine,SoftApStateMachine等文件,要阅读源码的,可以下载来看看!
android 9 原生状态机的几个类
把StateMachine从安卓源码中提取出来用于app开发
有限状态机 用Kotlin编写的优雅的有限状态机(DFA)。 我在添加了基本代码,还添加了强类型支持以及其他内容。 添加到您的依赖项 将其添加到存储库末尾的root build.gradle中: allprojects { repositories { ...
StateMachine Kotlin DSL,用于有限状态机。 在猩红色用法中使用StateMachine在本示例中,我们根据以下状态图创建一个StateMachine。 定义状态,事件和副作用:se StateMachine用于有限状态机的Kotlin DSL。 在猩...
详细介绍了android状态机的实现和状态之间切换流程与代码分析。
安卓状态机 发布到 Maven Central 的的状态机的构建。 Gradle dependencies { ... compile 'de.hdodenhof:androidstatemachine:1.0.0' } 变更日志 1.0.0 初始发行 执照 Copyright (C) 2009 The Android Open ...
Statelin:Kotlin和Android的有限状态机
工作流程 Kotlin和Swift的单向数据流库,着重: 对状态机驱动的UI和导航的强大支持。 组成和缩放。 轻松地将业务和UI关注分离。 此项目目前正在开发中,API如有更改,恕不另行通知。 关注Square的工程博客 ,以查看...
对状态机驱动的UI和导航的强大支持。 组成和缩放。 轻松地将业务和UI关注分离。 此项目目前正在开发中,API如有更改,恕不另行通知。 关注Square的工程博客 ,以查看该项目何时稳定。 尽管该API尚不稳定,但此...
java8 源码 GH-Demo 1、jOOR源码研习,并优化对Class、Field等的缓存 ...10、学习Android中的StateMachine的层次状态机,并编写测试用例 11、学习LeadkCanary中对内存泄漏的检测方法--WeakReference
[状态机](#State-Machine) - [bug](#bug) - [设计模式](#pattern) - [客户端](#client) - [工具类](#utils) - [游戏内实现](#game) - [其他](#other) **服务端** [↑](#toc) ServerMain.java 服务端入口类,调用...