游戏冷启动时的漫长加载等待,是导致玩家流失的重要原因之一。特别是启动中途被电话、通知打断后,重新排队加载的过程极易消耗耐心。针对这一痛点,HarmonyOS SDK的图形加速服务(Graphics Accelerate Kit)提供了游戏预启动加速能力。该能力能在系统资源充足时,基于用户使用习惯提前拉起游戏应用,完成部分初始化与资源加载,从而在用户主动启动时大幅缩短加载时间,提升留存。
实现游戏预启动的核心在于识别启动模式并控制预启动流程。开发者在UIAbility的onCreate生命周期中,通过want.parameters获取启动原因。当参数“ohos.params.gamePrelaunch”为true时,代表当前实例是由预启动机制触发的,而非用户正常冷启动。以下是判断预启动启动的代码实现:- import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
- import { launchAcceleration } from '@kit.GraphicsAccelerateKit';
- let isPrelaunchStart: boolean = false;
- export default class EntryAbility extends UIAbility {
- onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
- isPrelaunchStart = (want.parameters?.["ohos.params.gamePrelaunch"] as boolean) ?? false;
- console.info(`EntryAbility onCreate, isPrelaunchStart:${isPrelaunchStart}`);
- }
- }
复制代码
在游戏引擎自渲染并运行到登录页或大厅界面后,开发者需调用completeGamePrelaunch接口,主动通知加速服务预加载已完成,以便系统释放资源或进行后续调度。注意调用前应先通过canIUse检查系统能力SystemCapability.GraphicsGame.LaunchAcceleration是否可用,并仅当isPrelaunchStart为true时才执行。示例代码如下:- async completeGamePrelaunch() {
- if (!isPrelaunchStart) {
- return;
- }
- if (canIUse('SystemCapability.GraphicsGame.LaunchAcceleration')) {
- try {
- await launchAcceleration.completeGamePrelaunch(this.context);
- console.info('completeGamePrelaunch success');
- } catch (err) {
- console.error(`completeGamePrelaunch failed, code is ${err.code}, message is ${err.message}`);
- }
- }
- }
复制代码
遇到某些异常场景如资源更新、用户尚未同意隐私协议时,预启动应被终止。此时应调用terminateGamePrelaunch接口通知加速服务取消本次预加载:- async terminateGamePrelaunch() {
- if (!isPrelaunchStart) {
- return;
- }
- if (canIUse('SystemCapability.GraphicsGame.LaunchAcceleration')) {
- try {
- await launchAcceleration.terminateGamePrelaunch(this.context);
- console.info('terminateGamePrelaunch success');
- } catch (err) {
- console.error(`terminateGamePrelaunch failed, code is ${err.code}, message is ${err.message}`);
- }
- }
- }
复制代码
实际集成时,开发者需根据游戏自身逻辑(如是否首次启动、是否需加载额外资源)决定预启动到达的最终阶段,并在到达后及时调用completeGamePrelaunch。这套机制不仅显著优化冷启动耗时,还能在后台静默完成部分初始化,对用户完全透明,是提升游戏体验的利器。
更多开发指导可参考图形加速服务官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/graphics-accelerate-kit-guide?ha_source=hms1 |