Android Crash 前的最后抢救
Android 最后 Crash
2023-09-27 14:22:49 时间
众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。
一,Java捕获异常
在实现安全气囊之前,我们先思考一个问题,像 bugly、sentry 这种监控框架是如何捕获异常并上传堆栈的呢?要了解这个问题,我们首先要了解一下当异常发生时是怎么传播的。
可以看到,异常到奔溃的流程很简单,主要分为以下几步:
- 当抛出异常时,通过Thread.dispatchUncaughtException进行分发。
- 依次由Thread,ThreadGroup,Thread.getDefaultUncaughtExceptionHandler处理。
- 在默认情况下,KillApplicationHandler会被设置defaultUncaughtExceptionHandler。
- 然后KillApplicationHandler中会调用Process.killProcess退出应用。
可以看出,如果我们通过Thread.setDefaultUncaughtExceptionHandler设置自定义处理器,就可以捕获异常做一些兜底操作了,其实 bugly 这些库也是这么做的。
二、自定义异常处理器
那么如果我们设置了自定义处理器
相关文章
- Android Studio-目录结构
- Android RadioGroup和RadioButton详解
- Android 调整屏幕分辩率
- 一份字节跳动面试官给你的Android技术面试指南,绝对干货
- 2021最新Android大厂面试真题大全,已拿到offer
- Android摄像头测量尺(Advanced Ruler Pro)使用方法
- 关于android SDK安装Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml出错二
- Android Studio自带图标制作利器Asset Studio制作多分辨率图标
- 【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )
- 5分钟搞定android混淆
- 【Android 进程保活】应用进程拉活 ( 双进程守护 + JobScheduler 保活 | 成功率最高 | 推荐使用 )
- qt for Android解决全面屏手机安装程序出现下部黑边显示不全问题