Skip to content

preLoadGameBySignature

预加载游戏(通过游戏签名)

preLoadGameBySignature 方法允许开发者使用 游戏签名(Game Signature) 提前初始化游戏环境。相比于直接使用 ID,此接口通过签名锁定了特定的游戏版本和授权上下文,确保预加载的环境与最终启动时的环境完全一致。

该接口不仅确保资源就绪,还会预先启动脚本引擎并完成首屏渲染准备。


方法声明

java
/**
 * 预加载游戏,根据游戏签名
 *
 * @param signature     游戏签名
 * @param listener      预加载状态监听器
 * @return SUDOPGameTask 任务句柄,可用于管理或销毁预加载任务
 */
public static SUDOPGameTask preLoadGameBySignature(
    String signature, 
    SUDOPPreLoadGameListener listener
);

参数说明

用于封装预加载所需的授权信息:

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

SUDOPPreLoadGameListener

用于接收预加载结果的回调接口:

  • void onSuccess(String gameId, SUDRTGameHandle handle):预加载成功。

  • gameId:解析出来的游戏标识。

  • handle:游戏实例句柄。此时游戏已在后台完成初始化,调用 handle.getGameView() 即可获得视图。

  • void onFailure(int retCode, String retMsg):预加载失败。可能原因包括签名过期、网络异常或系统资源不足。


运行行为

  1. 合法性验证:SDK 首先解析并验证 gameSignature 的时效性与权限。
  2. 静默资源准备:对比本地缓存,若有版本更新则执行后台静默下载。
  3. 引擎预热:加载对应的游戏内核,初始化脚本执行环境。
  4. 实例挂起:创建 SUDRTGameHandle 并完成资源预加载,使游戏处于“即开即玩”的挂起状态。

代码示例

java
// 1. 准备预加载参数
String signature = "PRE_OBTAINED_GAME_SIGNATURE";

// 2. 执行预加载
SUDOPGameTask preLoadTask = SUDOP.preLoadGameBySignature(signature, new SUDOPPreLoadGameListener() {
    @Override
    public void onSuccess(String gameId, SUDRTGameHandle handle) {
        // 预加载成功
        Log.i("SUDOP", "Pre-load success for game: " + gameId);
        // 开发者可在此处缓存 handle
    }

    @Override
    public void onFailure(int retCode, String retMsg) {
        // 预加载失败
        Log.e("SUDOP", "Pre-load failed: " + retMsg);
    }
});

// 如果用户取消操作,释放预加载占用的内存
// preLoadTask.destroy();

注意事项

  • 签名匹配:预加载所使用的签名必须与后续启动该游戏时预期的签名一致。
  • 资源占用:预加载会占用实际内存。在低端设备上,请根据内存压力决定是否执行此操作。
  • 销毁逻辑:如果用户最终未进入游戏并销毁了相关页面,务必调用 preLoadTask.destroy() 释放资源,否则会导致内存泄漏。