蓝牙之三-StateMachine

本文探讨了蓝牙管理中使用的状态机,详细介绍了状态机的工作原理,包括如何处理消息、状态转换、延迟消息以及在蓝牙BondStateMachine中的应用。通过实例展示了状态机在蓝牙连接过程中的角色,阐述了如何在不同状态间进行切换以及消息处理流程。

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

蓝牙和wifi的管理上都使用到了状态机。

该状态机属于分层状态机管理消息。一个状态对应于一个<State>对象,并且状态必须实现<processMessage>方法,可选的实现方法是<enter/exit/getName>,<enter/exit>方法对应于构造和析构函数,它们被用于初始化和清理状态。<getName>方法返回状态的名称,缺省的方式是返回返回类名称,但是也许返回实例的名称是使用者更想要的方式,尤其是一个状态类具有多个实例的时候。

当状态机使用创建后,<addState>方法用于创建状态层次,<setInitialState>用于标识哪些是初始的状态。构造完成后程序调用<start>方法用于初始化和启动状态机。状态机的第一个动作是为所有的状态层次(从最原始的父类开始)调用<enter>方法。这在处理任何消息之前完成。如下的mP1.enter将唤醒mS1.enter。最中发送该状态的的信息被当前状态处理,也就是被<mS1.processMessage>方法。

     mP1
      /   \
 mS2   mS1 ----> initial state


在状态机被创建和启动后,消息的创建方法是<obtainMessage>,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值