我们可以利用Thread.setDefaultUncaughtExceptionHandler
拦截app发生的崩溃。
大多情况下,我们拦截非主线程崩溃是没问题的。
问题在于拦截主线程崩溃,问题来了:
- 如果我们拦截了一个主线程的崩溃,让app不崩溃,用户还能正常使用吗?
- 如果用户不能正常使用了,是为什么?
- 那么有没有更好的方案拦截主线程的崩溃?
ps:本题讨论拦截的是指: 系统bug或者第三方SDK导致的用户弱(无)感知崩溃。
更多问答 >>
-
每日一问 在 Java 支持了 switch(字符串)之后,只是语法糖而已?
2020-06-01 00:55 -
2020-06-07 20:55
-
每日一问 | Activity与Fragment的那些事,“用起来没问题,我都要走了,你崩溃了?”
2020-06-22 00:39 -
2020-06-09 23:17
-
每日一问 | 曾经的记忆中“onSaveInstanceState 会在系统意外杀死 Activity 时调用”,正确吗?
2020-07-12 23:49 -
每日一问 | 我们常说的dalvik虚拟机是基于寄存器的,而jvm是基于栈,到底指的是什么?
2020-05-20 21:29 -
2020-05-21 01:15
-
每日一问 | Activity 调用了finish()方法会立即调用onDestory()吗?
2020-05-13 00:16 -
2020-05-07 10:02
-
每日一问 “PathClassLoader 只能加载已安裝到系統中(即/data/app目录下)的apk文件” 严谨吗?
2020-05-05 20:46
不能正常使用,主线程已经挂了,再操作会ANR
这样拦截主线程的崩溃。
Cockroach原理分析
我去,一般人真想不出来这个思路。你这个已经用在线上了吗?
这个方案有个问题,你的bug崩溃收集后台没法作出正确分类,所有的都归到一类去了。
我是用在线上了,可以防止很多低级错误导致的崩溃,但也不是万能的,比如在activity生命周期内或view绘制时崩溃只能黑屏退出
没想到有啥问题,其他大佬能想到可能存在的隐患吗?
没什么隐患。
太厉害了,感谢感谢
这个做法厉害,之前听ios的同事说过这种,今天看到了你这种思路,拜服。
哈,看到了我的方案。这个方案头条app也在用,但要提醒下不要盲目开启,一定要结合自己的业务场景去分析是否可以开启。Cockroach有两个分支,建议参考X分支的方案,X分支不会提前侵入系统调用堆栈,w ...查看更多
哈,看到了我的方案。这个方案头条app也在用,但要提醒下不要盲目开启,一定要结合自己的业务场景去分析是否可以开启。Cockroach有两个分支,建议参考X分支的方案,X分支不会提前侵入系统调用堆栈,wangzhen0908回答的是master分支的方案,会提前侵入调用栈,并且无法拦截冷启动时的崩溃