01.Android崩溃Crash流程图
2023-02-24 13:37:17 21 举报
崩溃Crash流程图
作者其他创作
大纲/内容
init进程
JVM处理异常入口
否
dispatchUncaughtException
应用信息
uncaughtExceptionHandler处理
ANR监控
1.崩溃场景2.关键操作3.其他自定义信息路径4.app版本等
如果 ThreadGroup 对象对处理异常没有什么特殊要求,那么它可以将调用转发给默认的未捕获异常处理程序。如果多次设置默认handler,则以最后一次为准
2.在finally中杀死app操作
1.系统剩余内存2.虚拟内存3.应用使用内存4.线程数
是
一旦线程出现抛出异常,并且没有捕获。JVM将调用Thread中的dispatchUncaughtException方法把异常传递给线程的未捕获异常处理器
1.通过一个NativeCrashListener线程去监控的2.在该类run方法中循环地读peerFd文件3..进入native crash数据处理流程4.启动NativeCrashReporter作为上报错误的新线程
1.进程(前台进程还是后台进程)2.线程(是否是 UI 线程)3.崩溃堆栈4.崩溃堆栈类型(Java 崩溃、Native 崩溃 or ANR)
setDefaultUncaughtExceptionHandlerKillApplicationHandler
内存信息
系统信息
看一下main方法中commonInit()方法
getUncaughtExceptionPreHandler()是否为null
机型、系统、厂商、CPU、ABI、Linux 版本等。
App发生Crash收集
自己可以处理
RuntimeInit类
1.在try中调用AMS中handleApplicationCrash
崩溃收集哪些信息
ThreadGroup处理
java_crashjava层发生的crash
基本信息
initialUeh处理
native_crashnative层发生的crash
1.默认情况下,线程组处理未捕获异常的逻辑是,首先将异常消息通知给父线程组,2.然后尝试利用一个默认的defaultUncaughtExceptionHandler来处理异常,3.如果没有默认的异常处理器则将错误信息输出到System.err。4.也就是JVM提供给我们设置每个线程的具体的未捕获异常处理器,也提供了设置默认异常处理器的方法。
uncaughtException
uncaughtExceptionHandler是否为null
CrashHandler 自定义实现Thread.UncaughtExceptionHandler,初始化入口,处理uncaughtException逻辑CrashFileUtils 异常处理保存文件类,主要是拿到Throwable,然后获取崩溃信息,然后写入文件中CrashToolUtils 崩溃重启app的操作类,三种重启app方式都是静态方法ToolFileUtils 文件操作类,主要是创建文件,删除文件,以及获取文件操作等工具方法CrashListActivity 崩溃列表展示页面,崩溃信息按照时间排序CrashDetailsActivity 崩溃日志详情页展示崩溃后app应用信息,手机信息,堆栈链。以及分享,截图等功能
该库说明
0 条评论
回复 删除
下一页