Skip to content

preStartGameBySignature

预启动游戏(通过游戏签名)

preStartGameBySignature 是结合了最高安全等级极致加载性能的启动预处理接口。它通过游戏签名(Game Signature)锁定特定的游戏版本,并提前在后台完成从环境初始化到业务逻辑执行的全过程。

使用此接口后,游戏不仅资源就绪,其内部的逻辑框架、网络连接以及首屏渲染指令均已在后台处理完毕,用户点击启动时可实现“毫秒级”画面切换。


方法声明

java
/**
 * 预启动游戏,根据游戏签名
 *
 * @param signature         游戏签名
 * @param listener          预启动状态监听器
 * @return SUDOPGameTask    任务句柄,用于管理预启动的游戏实例
 */
public static SUDOPGameTask preStartGameBySignature(
    String signature, 
    SUDOPPreStartGameListener listener
);

参数说明

属性类型描述
signatureString必填。通过 getGameSignature 接口获取的合法签名。

SUDOPPreStartGameListener

  • void onSuccess(String gameId, SUDRTGameHandle handle):预启动完成。游戏已在后台处于 Activity 生命周期中的“Running”逻辑状态,但无物理视图显示。
  • void onFailure(int retCode, String retMsg):预启动失败。

运行行为

  1. 版本锁定:通过解析签名,SDK 确保预启动的游戏资源版本与后续正式启动时完全一致。
  2. 逻辑全开:与 preLoad 仅加载资源不同,preStart 会运行游戏的脚本逻辑,甚至可以提前触发游戏的网络预热(如连接游戏服务器)。
  3. 静默绘制:游戏首屏的渲染树已在内存中构建完成。
  4. 后台挂起:在监听到正式的启动指令前,游戏实例会保持静默运行,并自动处理音轨静音。

代码示例

java
// 1. 设置预启动参数
String signature = "LATEST_GAME_SIGNATURE_FROM_SERVER";

// 2. 发起预启动
SUDOPGameTask task = SUDOP.preStartGameBySignature(signature, new SUDOPPreStartGameListener() {
    @Override
    public void onSuccess(String gameId, SUDRTGameHandle handle) {
        // 预启动成功,此时 handle 已经持有了完整的游戏运行状态
        Log.i("SUDOP", "Game " + gameId + " is hot-started in background.");
    }

    @Override
    public void onFailure(int retCode, String retMsg) {
        Log.e("SUDOP", "Pre-start by signature failed: " + retMsg);
    }
});

// 若用户退出相关场景,必须销毁任务以停止后台逻辑执行
// task.destroy();

注意事项

  • 资源占用警示preStart 会产生真实的 CPU 和内存负载。严禁在内存压力较大的设备上或同时对多个游戏执行此操作。
  • 签名一致性:预启动使用的签名必须与最终 startGameByGameSignature 时使用的签名保持一致,否则预启动的实例可能无法被复用。
  • 生命周期同步:请务必监听宿主 Activity 的销毁事件,及时调用 task.destroy(),避免游戏逻辑在后台持续运行导致耗电或内存泄漏。