如果开发者使用的是团结引擎1.8.1及以上版本,启动加速能力已内置到引擎中,无需按本章流程手动调用ArkTS接口。请参考团结引擎启动加速能力文档完成集成。
注意:团结引擎1.8.1~1.9.0版本在Tablet设备上存在未捕获异常的问题,详细信息请参见本文FAQ。

用户启动游戏。
游戏在onCreate生命周期中调用setSupportedProcessCache接口,设置游戏支持缓存后快速启动。
用户上划退出游戏。
在onWindowStageWillDestroy生命周期中,游戏调用isLaunchMirrorEnabled接口向游戏启动加速服务查询游戏内存镜像功能是否开启。若已开启,ArkTS侧通知游戏引擎将当前场景切换至登录页,引擎完成场景切换后将结果回传ArkTS侧。若场景切换失败或超时,则调用setSupportedProcessCache接口,取消游戏对缓存后快速启动的支持。
建议开发者切换场景时,将场景切换至游戏登录界面并设置最大超时时间5s。
在onDestroy生命周期中,游戏再次调用isLaunchMirrorEnabled接口确认内存镜像功能状态。若未开启,则执行引擎析构流程,游戏进程随即退出。
用户重新启动游戏。
游戏根据是否存在内存镜像决定启动方式:若存在内存镜像,系统将此前换出至磁盘的游戏对象重新换入到内存,实现秒级启动;若不存在内存镜像,则按正常流程启动游戏。

游戏冷启动场景
游戏进程会依次创建AbilityStage、UIAbility以及WindowStage,完成应用与界面的初始化。
游戏秒级启动场景
当秒级启动能力开启后,用户上划移除游戏时,系统会依次销毁WindowStage和UIAbility对象,随后对游戏进程进行深度冻结。在此过程中,系统会将游戏进程中的大部分对象换出至磁盘,仅保留少量关键对象驻留在内存中,以降低内存占用。
在触发游戏秒级启动时,系统会将此前换出到磁盘的游戏对象重新换入内存,同时游戏进程会重新创建UIAbility和WindowStage对象,从而实现快速恢复与启动。
导入Graphics Accelerate Kit模块。
import { launchAcceleration } from '@kit.GraphicsAccelerateKit'; 游戏启动时,在onCreate生命周期中调用setSupportedProcessCache接口,设置游戏支持缓存后快速启动。
if (canIUse("SystemCapability.GraphicsGame.LaunchAcceleration")) { // 兼容性:通过canIUse()校验设备是否支持启动加速服务
try {
this.context.getApplicationContext().setSupportedProcessCache(true);
} catch (error) {
let code = (error as BusinessError).code;
let message = (error as BusinessError).message;
console.error(`setSupportedProcessCache fail, code: ${code}, msg: ${message}`);
}
} 游戏退出时,调用isLaunchMirrorEnabled接口,查询游戏内存镜像功能是否开启。若已开启,游戏先切换场景,游戏需在onWindowStageWillDestroy生命周期中进行场景切换,建议开发者将场景切换至游戏登录界面,并在onDestroy生命周期中取消游戏引擎的销毁步骤,系统在退出游戏前自动制作内存镜像,制作内存镜像大概需要4s。
游戏启动加速服务制作游戏内存镜像需要4s,若在4s内再次进入游戏,则秒级启动不生效,启动方式为正常冷启动。
游戏本次基于内存镜像启动加速,若在10s内上划退出,下一次启动不会加速,因为系统DFR(Design for Reliability,可靠性设计)保护机制,防止游戏快启后无法使用。
系统将结合当前设备的游戏热度、内存镜像数、当日磁盘换出量综合判定是否开启内存镜像功能。
onWindowStageWillDestroy(): void {
if (canIUse("SystemCapability.GraphicsGame.LaunchAcceleration")) { // 兼容性:通过canIUse()校验设备是否支持启动加速服务
let enable = launchAcceleration.isLaunchMirrorEnabled()
if (enable) {
// 切换场景的代码逻辑
// ...
}
}
}
onDestroy(): void {
if (canIUse("SystemCapability.GraphicsGame.LaunchAcceleration")) { // 兼容性:通过canIUse()校验设备是否支持启动加速服务
let enable = launchAcceleration.isLaunchMirrorEnabled()
if (!enable) {
// 若未使能,才进行游戏引擎的销毁
}
}
// ...
}