preStartGameBySignature
预启动游戏(通过游戏签名)
preStartGameBySignature 是结合了最高安全等级与极致加载性能的启动预处理接口。它通过游戏签名(Game Signature)锁定特定的游戏版本,并提前在后台完成从环境初始化到业务逻辑执行的全过程。
使用此接口后,游戏不仅资源就绪,其内部的逻辑框架、网络连接以及首屏渲染指令均已在后台处理完毕,用户点击启动时可实现“毫秒级”画面切换。
方法声明
java
/**
* 预启动游戏,根据游戏签名
*
* @param signature 游戏签名
* @param listener 预启动状态监听器
* @return SUDOPGameTask 任务句柄,用于管理预启动的游戏实例
*/
public static SUDOPGameTask preStartGameBySignature(
String signature,
SUDOPPreStartGameListener listener
);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| signature | String | 必填。通过 getGameSignature 接口获取的合法签名。 |
SUDOPPreStartGameListener
void onSuccess(String gameId, SUDRTGameHandle handle):预启动完成。游戏已在后台处于 Activity 生命周期中的“Running”逻辑状态,但无物理视图显示。void onFailure(int retCode, String retMsg):预启动失败。
运行行为
- 版本锁定:通过解析签名,SDK 确保预启动的游戏资源版本与后续正式启动时完全一致。
- 逻辑全开:与
preLoad仅加载资源不同,preStart会运行游戏的脚本逻辑,甚至可以提前触发游戏的网络预热(如连接游戏服务器)。 - 静默绘制:游戏首屏的渲染树已在内存中构建完成。
- 后台挂起:在监听到正式的启动指令前,游戏实例会保持静默运行,并自动处理音轨静音。
代码示例
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(),避免游戏逻辑在后台持续运行导致耗电或内存泄漏。