除了底层的信号和字节码插桩,SDK 还利用标准的 Java 和 Android API 来捕获应用在运行时的关键事件。
技术原理上分两类:
- Java API:JVM 提供了 Thread.UncaughtExceptionHandler 这一标准机制处理未被捕获的异常。开发者可以设置一个全局处理器,当任何线程因未捕获异常而即将终止时该处理器会被调用,这是应用崩溃前执行最后清理或记录操作的唯一机会。
- Android API:利用 Android 框架层的生命周期回调机制监控页面、用户行为和应用启动等事件。以 Activity 为例,其生命周期由 onCreate、onStart、onResume、onPause、onStop、onDestroy 等回调方法管理。Android 提供 Application.ActivityLifecycleCallbacks 接口,允许注册一个监听器接收应用中所有 Activity 的生命周期事件。
具体采集能力包括:
- Java Crash 采集:通过 Thread.setDefaultUncaughtExceptionHandler 注册全局异常处理器,在 Java 异常时收集异常类型、消息、堆栈以及当前会话、页面等上下文信息,并在应用下次启动时上报。
- 卡顿采集:使用 Java 多线程能力实现卡顿监听。
- View 采集:通过 Android 标准回调接口精确追踪用户在各个页面的活动,利用生命周期回调计算页面加载时间和页面停留时间等核心指标。
- Application 状态采集:通过监听生命周期,实现 APP 冷热启动事件、前后台切换事件采集。




