获得徽章 0
Android开发
【Android】引入FireBase:Crashlytics日志不上报问题(setDefaultUncaughtExceptionHandler())

问题描述:
FireBase:Crashlytics的Crash异常捕获是通过Thread.setDefaultUncaughtExceptionHandler()来进行捕获的

Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler eh)

当前项目原有的全局异常捕获与Crashlytics的方式是同一种,并且由于setDefaultUncaughtExceptionHandler()只支持设置一个对象进行监听,所以应用进程启动时,Crashlytics的监听类总是会第一个先被设置进去,之后项目中的监听类后被设置以至于将Crashlytics的监听类覆盖,导致Crashlytics异常无法捕获,上报不生效:
kotlin复制代码Thread.setDefaultUncaughtExceptionHandler(new MyProjectCrashHandler());

解决方法
所以可以借用

Thread.getDefaultUncaughtExceptionHandler();

1、在设置当前项目的监听类之前:先获取到Crashlytics的监听对象
2、将Crashlytics的监听对象设为本项目监听类的成员对象
3、本项目监听类在接收到异常时,将捕获的异常通过Crashlytics成员变量的uncaughtException(Thread t, Throwable e)接口函数进行回调,从而作为中间人把异常传递给Crashlytics进行上报
展开
4
【Android开发】
[硬解码aac流时需要注意bytebuffer缓冲区直接使用put(byte )会使缓冲区位置改变,从而导致解码aac不成功,正确代码如下:“ bytes.position(0); 为重点,将索引值重置”
ByteBuffer bytes = ByteBuffer.allocate(2);
bytes.put((byte) 0x11);
bytes.put((byte) 0x88);
bytes.position(0);
audioFormat.setByteBuffer("csd-0", bytes);]()
展开
2
Android开发
Android开发
赞了这篇沸点
今天我来上班了
7
下一页
个人成就
文章被点赞 38
文章被阅读 12,167
掘力值 309
收藏集
0
关注标签
23
加入于