Skip to content

create

创建小游戏运行环境

create() 是启动小游戏流程中的第一个动作指令。在调用此方法之前,你必须已经完成了启动参数的配置(setGameStartOptions)。执行此方法后,Runtime 会初始化底层引擎实例、准备 JS 运行环境并分配必要的系统资源。


方法声明

java
/**
 * 创建小游戏运行环境。
 * 操作成功后小游戏实例进入 `WAITING` 状态。
 * 只有当小游戏启动参数设置正确且目前没有运行环境时才能正确创建小游戏运行环境。
 */
void create();

运行行为与状态迁移

1. 前提条件

  • 必须先调用 setGameStartOptions 设置有效的 appId
  • 当前状态必须为 GAME_STATE_UNAVAILABLE

2. 执行过程

  • SDK 会检查本地游戏资源包是否完整。
  • 初始化渲染表面(Surface/Texture)。
  • 启动内置的 JS 虚拟机(如 V8 或 JSC)。

3. 结果

  • 如果成功,状态变为 GAME_STATE_WAITING
  • 如果失败(如内存不足、包校验失败),会通过 GameStateChangeListener.onFailure 回调通知。

代码示例:标准初始化序列

java
// 1. 设置必要参数
Bundle options = new Bundle();
gameHandle.setGameStartOptions("my_game_123", options);

// 2. 监听状态反馈
gameHandle.setGameStateListener(new SUDRTGameHandle.GameStateChangeListener() {
    @Override
    public void onStateChanged(int fromState, int toState) {
        if (toState == SUDRTGameHandle.GAME_STATE_WAITING) {
            // 环境准备好了,下一步可以启动脚本了
            Log.i("SUDOP", "Environment created. Ready to start().");
            gameHandle.start("{}");
        }
    }
    // ... 其他回调省略
});

// 3. 触发创建
gameHandle.create();

注意事项

  • 幂等性限制:如果游戏已经处于 WAITINGRUNNINGPLAYING 状态,重复调用 create() 通常会被忽略或报错。
  • 资源占用create() 之后,JS 引擎会占用一定的内存。如果用户长时间停留在加载页而没有进入游戏,建议根据业务逻辑考虑是否需要 destroy() 以释放资源。
  • View 获取:通常在 create() 成功后,你就可以通过 getGameView() 获取到用于显示的 View 对象并添加到布局中了。