文章配图:持续后台运行

页面预览

前言

startBackgroundRunning 是 BackgroundTasksKit 中申请持续后台运行的 API。在「猫猫大作战」中,切后台时申请后台运行保存游戏状态。

一、申请后台运行

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

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

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

二、后台模式

模式 说明 游戏中使用
AUDIO_PLAYBACK 音频播放 BGM 持续播放
DATA_TRANSFER 数据传输 自动保存
LOCATION 定位 城市排行
TASK 短暂任务 游戏状态保存

三、生命周期管理

onBackground() {
  if (this.gameState === GameState.PLAYING) {
    startBgRunning(getContext() as Context);
    this.gameState = GameState.PAUSED;
    this.clearTimers();
    this.saveGameState();
  }
}

onForeground() {
  stopBgRunning(getContext() as Context);
  if (this.savedState) {
    this.restoreGameState();
  }
}

四、限制说明

限制 说明
时长 音频模式较长,普通任务 3 分钟
电量 显著增加耗电
配额 系统根据使用频率分配
必须前台申请 用户可见时调用

五、最佳实践

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

总结

startBackgroundRunning 申请后台持续运行,保存游戏状态。核心要点:BackgroundMode 选择模式、 onBackground/onForeground 管理生命周期、 回前台立即停止

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


相关资源:

Logo

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

更多推荐