文章配图:背景任务的申请与 BG 模式

页面预览

前言

backgroundTasksKit 提供了后台任务能力,允许应用在后台持续运行有限时长。在「猫猫大作战」中,当游戏进行中用户切到后台时,我们需要申请后台任务让游戏继续运行,或者至少保存当前状态。

一、后台任务申请

import { backgroundTaskManager } from '@kit.BackgroundTasksKit';

async function requestBackgroundRunning(context: Context): Promise<void> {
  try {
    await backgroundTaskManager.startBackgroundRunning(context,
      backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK
    );
    console.info('后台运行已申请');
  } catch (err) {
    console.error(`后台运行申请失败: ${err.message}`);
  }
}

async function stopBackgroundRunning(context: Context): Promise<void> {
  try {
    await backgroundTaskManager.stopBackgroundRunning(context);
    console.info('后台运行已停止');
  } catch (err) {
    console.error(`停止后台运行失败: ${err.message}`);
  }
}

二、支持的 BackgroundMode

模式 说明 游戏中使用
AUDIO_PLAYBACK 音频播放 背景音乐继续播放
LOCATION 定位 地理位置排行
DATA_TRANSFER 数据传输 战绩同步
TASK 短暂任务 状态保存

三、在游戏中的集成

onBackground() {
  if (this.gameState === GameState.PLAYING) {
    // 申请后台运行(保存游戏状态)
    requestBackgroundRunning(getContext() as Context);

    // 暂停游戏循环
    this.gameState = GameState.PAUSED;
    this.clearTimers();

    // 保存游戏快照
    AppStorage.setOrCreate('savedGame', {
      score: this.score,
      cats: this.cats,
      gameTime: this.gameTime,
    });
  }
}

onForeground() {
  stopBackgroundRunning(getContext() as Context);

  // 恢复游戏状态
  const saved = AppStorage.get<SavedGame>('savedGame');
  if (saved && this.gameState === GameState.PAUSED) {
    this.score = saved.score;
    this.cats = saved.cats;
    this.gameTime = saved.gameTime;
    this.resumeGame();
  }
}

四、限制说明

限制 说明
单次最长 3 分钟(普通任务)/ 更长(音频任务)
每日配额 系统根据使用频率动态分配
必须用户可见时申请 切后台前后台任务
电量影响 长时间后台运行会显著增加耗电

五、最佳实践

  1. 仅必要时申请:只在游戏进行中切后台时申请
  2. 回前台立即停止:在 onForeground 中调用 stopBackgroundRunning
  3. 状态保存:后台任务首要目标是保存游戏状态
  4. 音频模式保活:带 BGM 时用 AUDIO_PLAYBACK 模式

总结

backgroundTasksKit 的后台任务能力让游戏在切后台时保存状态。核心要点:startBackgroundRunning 申请、 BackgroundMode 根据用途选择、 回前台立即停止、 优先保存游戏状态

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐