HarmonyOS鸿蒙Next中发生崩溃时刻提供回调拦截方法

HarmonyOS鸿蒙Next中发生崩溃时刻提供回调拦截方法 当前是在应用启动时,通过FaultLogger.query方式判断是否存在新的崩溃数据,然后从崩溃数据中解析出崩溃堆栈、应用版本、崩溃产生时间等,无法获取崩溃时刻CPU使用率、内存占用、磁盘等信息。

3 回复

您可以使用 hidebug 获取 CPU 使用率、内存占用等信息,可以参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-hidebug-V5

hidebug.getCpuUsage 获取进程的 CPU 使用率。

hidebug.getNativeHeapSize 获取本应用堆内存的总大小

hidebug.getNativeHeapFreeSize 获取本应用堆内存的空闲内存大小

您可以使用文件系统空间统计接口获取磁盘空间信息(单位 Byte)

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-statvfs-V5

这边建议您后续使用 hiappevent 接口 平替 FaultLogger

faultlogger 接口计划废弃,

然后,关于收集崩溃时的 CPU 等信息,目前暂无方案支持

关于 hiappevent 接口的使用,您可以参考以下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/hiappevent-intro-V5

CPU 高负载等系统事件订阅可参考以下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/u9ad8_u8d1f_u8f7d_u4e8b_u4ef6-V5

目前暂不支持获取到崩溃时刻的内存、CPU 信息,

更多关于HarmonyOS鸿蒙Next中发生崩溃时刻提供回调拦截方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果应用发生崩溃,可以通过注册AppRecoveryCallback来拦截崩溃时刻的回调。AppRecoveryCallback是鸿蒙系统提供的一个接口,允许开发者在应用崩溃时执行自定义的恢复逻辑。

具体实现步骤如下:

  1. 实现AppRecoveryCallback接口: 创建一个类并实现AppRecoveryCallback接口,重写onAppRecovery方法。在该方法中,你可以定义应用崩溃时的处理逻辑。

    class MyAppRecoveryCallback implements AppRecoveryCallback {
        onAppRecovery(info: AppRecoveryInfo): void {
            // 自定义崩溃处理逻辑
            console.error("应用崩溃,执行恢复逻辑");
        }
    }
    
  2. 注册回调: 在应用的入口处(如onCreate方法中),通过AppRecoveryManager注册你实现的回调。

    AppRecoveryManager.registerCallback(new MyAppRecoveryCallback());
    
  3. 处理崩溃信息: 在onAppRecovery方法中,你可以通过AppRecoveryInfo对象获取崩溃的详细信息,如崩溃原因、堆栈信息等,以便进行更精确的恢复操作。

    onAppRecovery(info: AppRecoveryInfo): void {
        const crashReason = info.getCrashReason();
        const stackTrace = info.getStackTrace();
        console.error(`崩溃原因:${crashReason}`);
        console.error(`堆栈信息:${stackTrace}`);
        // 执行恢复逻辑
    }
    

通过以上步骤,你可以在HarmonyOS鸿蒙Next中拦截应用崩溃时刻的回调,并执行自定义的恢复逻辑。

在HarmonyOS鸿蒙Next中,可以通过实现AppRecoveryManagerRecoveryCallback接口来拦截应用崩溃时刻。具体步骤如下:

  1. 实现RecoveryCallback接口,并重写onRecovery方法。
  2. onRecovery方法中处理崩溃逻辑,如日志记录、数据保存等。
  3. 使用AppRecoveryManager.setRecoveryCallback方法设置回调。

示例代码:

AppRecoveryManager.setRecoveryCallback(new RecoveryCallback() {
    @Override
    public void onRecovery() {
        // 处理崩溃逻辑
    }
});

此方法可在应用崩溃时执行自定义操作,提升用户体验。

回到顶部