应用终止事件介绍
概述
从API version 20开始,HiAppEvent提供接口用于订阅应用终止事件。
应用终止是指应用程序被系统强制退出的一种现象。与应用崩溃不同,终止并非源于应用自身业务代码的异常,而是主要归因于系统基于资源管控策略而对应用实施的终止行为。
HiAppEvent提供接口用于订阅应用终止事件。
说明:
应用终止事件支持在应用分身场景下使用 HiAppEvent 进行订阅,支持在原子化服务场景下使用 HiAppEvent 进行订阅,从 API version 22 开始支持在输入法应用场景下使用 HiAppEvent 进行订阅。
应用终止事件信息中params属性的详细描述如下:
事件字段说明
params字段说明
终止事件信息中params属性的详细描述如下:
| 名称 | 类型 | 说明 |
|---|---|---|
| time | number | 事件触发时间,单位为ms。 |
| reason | string | 终止原因,原因范围详见reason字段说明。 |
| foreground | boolean | 应用是否处于前台状态。true表示应用处于前台;false表示应用处于后台。 |
| app_running_unique_id | string | 应用运行时唯一关联的id。 说明:从API version 24开始支持该参数。 |
| bundle_version | string | 应用版本信息。 说明:从API version 24开始支持该参数。 |
reason字段说明
| 类型 | 说明 |
|---|---|
| LowMemoryKill | 整机低内存触发,优先级由低到高终止应用。 |
| SwapFull | Swap交换空间接近占满。 |
| ResourceLeak(IonLeak) | 应用占用的Ion内存超标。 |
| ResourceLeak(GpuRsLeak) | 应用的ArkUI组件在Render Service进程占用的GPU内存超标。 |
| ResourceLeak(GpuLeak) | 应用在本进程占用的GPU内存超标。 |
| ResourceLeak(AshmemLeak) | 应用占用的Ashmem内存超标。 |
| ResourceLeak(CES) | CES注册超限。 |
| ResourceLeak(PSSSoftLeak) | 后台应用内存占用超过检测阈值两倍,其中pss内存占比最高。 |
| ResourceLeak(PSSLeak) | 后台应用内存占用超过特定阈值,其中pss内存占比最高。 |
| ResourceLeak(VMALeak) | VMA泄漏。 |
| ResourceLeak(FDLeak) | FD泄漏。 |
| ResourceLeak(ThreadLeak) | 线程泄漏。 |
| ResourceLeak(KernelZoneLeak) | 页表内存泄漏。 |
| IllegalAudioRendererBySuspend | 应用的音频播放未申请合理的后台任务,其退至后台后仍有大量音频播放。 |
| PowerSaveClean | 整机切换到省电模式或应急模式。 |
| VrsKill | 三方应用检测到恶意进程后,调用PC端病毒检测处置服务接口终止进程。 |
| RssThresholdKiller | 应用的RSS(Resident Size Set)占用超标。 |
| OomKiller | 整机低内存,触发内核管控,按一定策略终止应用。 |
| CpaKiller | DRM(Digital Right Management)业务申请内存但是内存不足时,按一定策略终止进程以回收内存。 |
| KillApplication | 应用主动退出。 |
| OnRemoteDied | 远程服务死亡。 |
| Restart | 应用重启。 |
| UserRequest | 最近任务上划或清理。 |
| Uninstall | 应用卸载退出。 |
| Upgrade | 应用更新退出。 |
| Logout | 用户注销时,卸载应用沙箱。 |
| PermissionUpdate | 应用权限更新。 |
| aaForceStop | 通过aa命令强制停止应用。 |
| ThreadBlock6S | 应用主线程卡死超时。 |
| AppInputBlock | 用户输入响应超时。 |
| LifecycleTimeout | 应用生命周期超时。 |
| JsError | js层程序崩溃。 |
| CppCrash | native层程序崩溃。 |
| RSPixelMapFdOverLimit | 应用使用图片PixelMap资源超限导致渲染服务fd泄漏。 |
| CPUHighloadNotify | 应用后台CPU高负载,出现弹框,用户选择停止该应用。 |
| CPUHighloadUserRequest | 应用后台CPU高负载,设置界面用户选择停止该应用。 |
| IllegalAudioCapturerBySuspend | 应用录音未申请合理的后台任务,其退至后台后仍进行录音。 |
| IOHighload | IO高负载。 |
| AppFreeze | 应用冻屏无响应。 |
| MaliciousContinuousTaskActive | 恶意连续任务活跃。 |
| RsDataOverflow | RS数据溢出。 |
| HighTemperature | 温度超限。 |
| TransientTaskTimeout | 短时任务超时6s并且处于后台。 |
| TooManyReadyThreads | 就绪线程过多。 |
| JsHeapSleepCleanKill | sleep状态(夜间充电)进行js heapsize检测,超限后终止应用。 |
| HardwareDecodingResourcesLimit | 硬件解码资源限制。 |
| AppRecoveryNotifyAppOverLimit | 应用恢复通知应用超限。 |
| GpuError | GPU错误。 |
| NotAttachedToStatusBar | 未附加到状态栏。 |
| CPUHighload | 应用后台CPU高负载,系统自动终止应用。 |
| AshmemKiller | 整机低内存,单进程ASHMEM内存超限。 |
| GpuKiller | 整机低内存,单进程GPU占用达到阈值。 |
| DmaKiller | 整机低内存,单进程Dma占用达到阈值。 |
| ThreadKiller | 单进程线程超限。 |
| UninstallStorage | 卸载存储卡。 |