HarmonyOS应用开发实战:猫猫大作战-持续后台运行
·


前言
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 分钟 |
| 电量 | 显著增加耗电 |
| 配额 | 系统根据使用频率分配 |
| 必须前台申请 | 用户可见时调用 |
五、最佳实践
- 仅必要时申请:游戏进行中切后台
- 回前台立即停止:
onForeground中停止 - 音频模式保活:带 BGM 使用 AUDIO_PLAYBACK
- 状态保存优先:后台首要任务是保存数据
总结
startBackgroundRunning 申请后台持续运行,保存游戏状态。核心要点:BackgroundMode 选择模式、 onBackground/onForeground 管理生命周期、 回前台立即停止。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐



所有评论(0)