日常开发Bug小记

Android crash 异常捕获处理Thread.Uncau

2017-11-17  本文已影响29人  IMSk

场景

最近正在做富文本编辑器功能,用原生实现。效果图如下:


image.png

面临一个问题是:如果用户确实写了很多内容,在某种场景下,导致程序奔溃了的,不论是外在或是富文本编辑器本身导致的,都会导致用户辛辛苦苦在手机上撰写的东西丢失掉。很痛心。

所以产品希望,如果发生意外闪退,帮助用户保存数据。

解决方案

想到了Android的 Thread.UncaughtExceptionHandler 。But:

image.png image.png

如图所示defaultUncaughtHandler是一个 static, 一旦设置之后,别人就拿不到了的回调事件了的,比如友盟之类的统计无法上报错误日志了的。

如何解?

image.png

如图所示,持有一下别人的引用,crash的时候同时通知下别人。这样就能保证别人也能正常拿到事件回调了的。

But, 这个bug小日记,其实是想说:抢系统资源的时候,请礼貌一些。因为据说友盟似乎就简单粗暴直接自己覆盖掉别人的了的,那样导致如果是后面初始化友盟,导致别人就拿不到回调了的。

同理,在处理音视频的时候,请也礼貌一些。因为系统其实也是支持资源管理的,但很多音乐播放软件并没有做这个处理。导致一旦打开音频之后,就被这个APP给霸占了的。这一点ios从API设计层面就规避掉了的。

当然日常开发过程中,也要注意 static的问题,别动不动为了方便就用静态变量,因为很难保证不被别人串改。

做一个有良知的开发者。加油。

上一篇下一篇

猜你喜欢

热点阅读