有限状态机(StateMachine)学习总结

本文介绍了有限状态机的概念,作为数学模型,状态机用于描述系统在不同状态间的转换和相应动作。以电梯系统为例,阐述了状态之间的层级关系。接着,详细分析了Android状态机的实现,包括启动状态、空闲状态、传输状态和等待状态的职责。在Android中,状态机用于处理短信发送的过程,如短信存储、发送和广播。源码可在Google服务器或作者的Github上查看。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

状态机定义

有限状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
状态机他解决的问题是,在一个系统(比如电梯),系统运行时有多个状态,在状态、事件间切换。
另外一个方面是状态之间的层级关系,如果电梯上行,必须先检查是否关门,如果没有,那么发送关门信息。
下图是短信发送状态机的结构图:
短信收发状态机
在这个图中,默认状态是全局父状态,它下面的子状态分别是,启动状态、空闲状态、传输状态;传输状态的子状态是等待状态。下面详细说明各状态所作的事情。
默认状态:当本状态接受到EVENT_UPDATE_PHONE_OBJECT消息后,更新Phone对象(onUpdatePhoneObject((Phone) msg.obj););
启动状态:当消息EVENT_NEW_SMS、EVENT_INJECT_SMS、EVENT_BROADCAST_SMS将他们存储到状态机消息队列中,让其他状态去处理,最终会交给传输状态处理。
空闲状态:将消息EVENT_NEW_SMS、EVENT_INJECT_SMS、EVENT_BROADCAST_SMS缓存,并切换到传输状态。
传输状态:处理短信的发送,短信广播发送等。
等待状态:当EVENT_BROADCAST_SMS,缓存消息,当 EVENT_BROADCAST_COMPLETE时发生消息EVENT_RETURN_TO_IDLE,切换到空闲状态。


Android 状态机实现分析

源码在Google服务器。未翻墙时可以访问我的Github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值