【问题标题】:Finite State Machine (FSM) and Android's Java有限状态机 (FSM) 和 Android 的 Java
【发布时间】:2011-04-16 03:45:42
【问题描述】:

我愿意为 Android 开发一款足球游戏。

由于 AI 的复杂性,我真的认为我需要使用 FSM(有限状态机) 而不是使用怪物开关来设计它。

四处搜索,我发现了一些用 Java 编写的 FSM,但没有与 Android 明确兼容:我想知道这里是否有人在该平台上使用过 FSM。

【问题讨论】:

  • 你是用 maven 构建的吗?

标签: java android fsm


【解决方案1】:

您可以试用我的带有 DSL 的 Kotlin 库来创建状态机。 它可以帮助我完成 Android 项目。

https://github.com/nsk90/kstatemachine

【讨论】:

    【解决方案2】:

    Android 有一个内部分层状态机 (HSM),它与 ​​Android 消息队列集成。

    它是内部的,因此您无法从 SDK 显式访问它。

    但是,如果您遵守 Apache 2.0 许可条款,您可以制作自己的版本。
    https://android.googlesource.com/platform/frameworks/base/+/gingerbread-release/core/java/com/android/internal/util/HierarchicalStateMachine.java

    编辑:
    这个类现在称为StateMachine

    【讨论】:

    【解决方案3】:

    另一个开源选项是@doridori 的Engine

    【讨论】:

      【解决方案4】:

      这种在 Android 中使用并由 Google 提供的状态机 (FSM) 实现似乎是一个不错的选择。你可以得到它here on Github

      您可以使用StateMachine 类来定义状态,初始状态,您可以在进入或退出状态时执行任务,您可以发送事件和延迟事件以实现例如超时。

      我没有找到很多其他替代方案,但这个实现包含了我正在寻找的所有功能。这是 Android 项目的一部分,所以我认为这是经过良好测试的。希望对您有所帮助。

      【讨论】:

        【解决方案5】:

        几个月前我一直在寻找适用于 Android 的 FSM,但找不到合适的东西,所以不得不自己创建。

        我现在在几个项目中使用它并且非常高兴。它使代码更简洁,易于使用。如果有人还在寻找 Java 的状态机,请查看EasyFlow

        您也可以contribute 参与该项目。

        【讨论】:

        • 项目不再支持,浪费了我的时间
        猜你喜欢
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 2013-08-28
        • 2014-10-24
        • 1970-01-01
        相关资源
        最近更新 更多