场景
最近正在做富文本编辑器功能,用原生实现。效果图如下:
面临一个问题是:如果用户确实写了很多内容,在某种场景下,导致程序奔溃了的,不论是外在或是富文本编辑器本身导致的,都会导致用户辛辛苦苦在手机上撰写的东西丢失掉。很痛心。
所以产品希望,如果发生意外闪退,帮助用户保存数据。
解决方案
想到了Android的 Thread.UncaughtExceptionHandler
。But:
如图所示defaultUncaughtHandler
是一个 static
, 一旦设置之后,别人就拿不到了的回调事件了的,比如友盟之类的统计无法上报错误日志了的。
如何解?
如图所示,持有一下别人的引用,crash的时候同时通知下别人。这样就能保证别人也能正常拿到事件回调了的。
But, 这个bug小日记,其实是想说:抢系统资源的时候,请礼貌一些。因为据说友盟似乎就简单粗暴直接自己覆盖掉别人的了的,那样导致如果是后面初始化友盟,导致别人就拿不到回调了的。
同理,在处理音视频的时候,请也礼貌一些。因为系统其实也是支持资源管理的
,但很多音乐播放软件并没有做这个处理。导致一旦打开音频之后,就被这个APP给霸占了的。这一点ios从API设计层面就规避掉了的。
当然日常开发过程中,也要注意 static
的问题,别动不动为了方便就用静态变量,因为很难保证不被别人串改。
做一个有良知的开发者
。加油。