preLoadGameBySignature
预加载游戏(通过游戏签名)
preLoadGameBySignature 方法允许开发者使用 游戏签名(Game Signature) 提前初始化游戏环境。相比于直接使用 ID,此接口通过签名锁定了特定的游戏版本和授权上下文,确保预加载的环境与最终启动时的环境完全一致。
该接口不仅确保资源就绪,还会预先启动脚本引擎并完成首屏渲染准备。
方法声明
java
/**
* 预加载游戏,根据游戏签名
*
* @param signature 游戏签名
* @param listener 预加载状态监听器
* @return SUDOPGameTask 任务句柄,可用于管理或销毁预加载任务
*/
public static SUDOPGameTask preLoadGameBySignature(
String signature,
SUDOPPreLoadGameListener listener
);参数说明
用于封装预加载所需的授权信息:
| 属性 | 类型 | 描述 |
|---|---|---|
| signature | String | 必填。通过 getGameSignature 接口获取的合法签名。 |
SUDOPPreLoadGameListener
用于接收预加载结果的回调接口:
void onSuccess(String gameId, SUDRTGameHandle handle):预加载成功。gameId:解析出来的游戏标识。handle:游戏实例句柄。此时游戏已在后台完成初始化,调用handle.getGameView()即可获得视图。void onFailure(int retCode, String retMsg):预加载失败。可能原因包括签名过期、网络异常或系统资源不足。
运行行为
- 合法性验证:SDK 首先解析并验证
gameSignature的时效性与权限。 - 静默资源准备:对比本地缓存,若有版本更新则执行后台静默下载。
- 引擎预热:加载对应的游戏内核,初始化脚本执行环境。
- 实例挂起:创建
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()释放资源,否则会导致内存泄漏。