前言

应用运行过程中会产生缓存数据、临时文件等,定期清理有助于释放存储空间。同时,在某些场景下需要主动退出应用进程。@pura/harmony-utilsAppUtil 封装了数据清理和进程管理方法,帮助开发者轻松实现这些功能。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

在这里插入图片描述

一、进程管理核心API

AppUtil 提供了以下进程管理方法,开发者应根据场景谨慎使用:

方法 说明 返回类型 使用场景
clearUpAppData() 清理应用数据 Promise<void> 重置应用状态
exit() 退出应用进程 void 正常退出应用
killProcess() 强制终止进程 void 异常恢复、强制退出

1.1 核心特性

  • 简洁易用:封装复杂API为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 统一风格:与harmony-utils其他工具类保持一致的调用风格

1.2 进程管理方法对比

方法 生命周期回调 数据保存 使用建议
exit() 触发 有机会保存 正常退出首选
killProcess() 不触发 无法保存 仅异常恢复时使用
clearUpAppData() 不涉及 清除所有数据 重置应用时使用

二、完整使用步骤

2.1 安装依赖

ohpm install @pura/harmony-utils

2.2 清理应用数据

import { AppUtil } from '@pura/harmony-utils';

Button('清理应用数据')
  .width('100%')
  .onClick(async () => {
    try {
      await AppUtil.clearUpAppData();
      this.result = '应用数据清理成功 ✅';
    } catch (e) {
      this.result = '清理失败: ' + e;
    }
  })

2.3 退出应用

Button('退出应用')
  .width('100%')
  .onClick(() => {
    AppUtil.exit();
  })

在这里插入图片描述

2.4 强制终止进程

Button('强制终止进程')
  .width('100%')
  .onClick(() => {
    AppUtil.killProcess();
  })

三、完整页面示例

import { AppUtil } from '@pura/harmony-utils';

@Entry
@Component
struct ProcessDemo {
  @State result: string = '';

  build() {
    Column({ space: 12 }) {
      Button('清理应用数据').width('100%').onClick(async () => {
        try {
          await AppUtil.clearUpAppData();
          this.result = '数据清理成功';
        } catch (e) { this.result = '清理失败: ' + e; }
      });

      Button('退出应用').width('100%').onClick(() => {
        AppUtil.exit();
      });

      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 退出前确认对话框

import { AppUtil, AlertDialogUtil } from '@pura/harmony-utils';

Button('安全退出应用')
  .width('100%')
  .onClick(() => {
    AlertDialogUtil.show({
      title: '确认退出',
      message: '确定要退出应用吗?',
      onConfirm: () => {
        AppUtil.exit();
      }
    });
  })

4.2 清理数据前备份

Button('重置应用')
  .width('100%')
  .onClick(async () => {
    try {
      // 先备份重要数据
      await this.backupImportantData();
      // 再清理
      await AppUtil.clearUpAppData();
      this.result = '数据已备份并清理成功';
    } catch (e) {
      this.result = '操作失败: ' + e;
    }
  })

五、注意事项

  1. 数据清理不可逆clearUpAppData() 会清除所有应用数据,包括数据库和首选项
  2. 退出应用exit() 会正常退出应用,触发生命周期回调
  3. 强制终止killProcess() 直接终止进程,不触发生命周期回调
  4. 用户确认:建议在执行清理或退出前弹出确认对话框
  5. 初始化依赖:使用前需确保 AppUtil.init() 已调用

六、常见问题

Q1: clearUpAppData()清理后应用还能正常使用吗?

清理后应用会恢复到初始状态,相当于重新安装。用户需要重新登录和配置。

Q2: exit()和killProcess()有什么区别?

exit() 会正常触发生命周期回调,有机会保存数据;killProcess() 直接终止进程,不触发任何回调。

Q3: 清理数据需要什么权限?

清理应用自身数据通常不需要特殊权限,但建议在执行前向用户说明操作后果。

Q4: 可以在后台自动清理缓存吗?

不建议在后台自动清理,应让用户主动触发,避免误删重要数据。

在这里插入图片描述
在这里插入图片描述

总结

AppUtil 的进程管理方法为应用的数据清理和退出提供了便捷接口。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者应根据实际场景选择合适的方法,并在执行前做好用户提示和数据备份。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

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

更多推荐