新上线的版本突然在友盟后台的崩溃日志没有了数据,然后有自知之明,知道肯定会有崩溃的,一定是这次改版哪个地方改错了。
经过了解,友盟的错误统计也是通过UncaughtExceptionHandler这个类实现的,通过全局的获取崩溃数据,记录下来,在下一次启动应用时提交。
我们自己的应用也有一个UncaughtExceptionHandler处理崩溃并记录到本地,用于测试时,统计错误。就想到了这两者会不会有影响呢。所以展开了调查。
我们都是用setDefaultUncaughtExceptionHandler方法把我们自己的UncaughtExceptionHandler设置成默认的处理器,当有多个handler先后调用后,只有最后一个会生效。我们的写法是先注册友盟的handler,再注册我们的handler。这时就会覆盖,但是反过来,这两者都会执行,不对啊,应该只有这一个执行啊。原来,友盟里,先把上一个handler拿出来,缓存上。先执行他的错误,然后再拿到缓存的handler处理我们的逻辑。
所以为什么不好使,我们的handler处理完了,并没有给缓存的handle处理,所以友盟拿不到这个错误,所以没有错误日志。
网友评论