文章配图:持续后台运行

页面预览

前言

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、测试、元服务和应用上架分发等。

更多推荐