稳定就是不出错,不崩溃
Android有两类Crash
· JavaCrash
· NativeCrash
Java crash
一般都是java曾代码触发,一般的crash工具也能捕获到,系统也有api提供。在开发过程中,通过logcat就可以看打印出来的堆栈信息。简单的话,这样就可以解决了。稍微复杂点,就需要查看更多的log,很多时候某一个crash并不是起因,那就需要再往上继续查。这种情况就复杂了,如果log完整,还是可以找到crash的原因。如果只是知道Error,但并不知为何挂,就需要在大概的多加log打印信息。从Framework层来讲,像intel,mtk的framework还是稳定的。而其他的平台比如全智、RK增加功能的方式比较粗暴。解决具体问题时,比如window token null,就检查下添加时机如何。
1 首先看崩溃的类型,是否是比较特定的那几种
拿BadTokenException举个例子:你大致就能确定一个activity正在被销毁或被销毁后dialog再去展示,造成的。这种很容易让人联想到一些不确定时长的异步操作(比如请求网络)之后才能显示的。然后,对应程序逻辑代码加上log很容易找。
2 检测是否有异常处理
有一些错误类型是不太正常的,比如执行到一个方法内发生了异常,但他对异常的一些处理导致了这段代码虽然异常,但仍然执行过去了,程序没有crash,但导致之后传递的结果或者调用产生了问题。
3 查看用户操作轨迹
这次崩溃是否由某些所特定的连锁操作做成的。
4 检查崩溃的机型,rom信息
看是否是厂商给开发者留的坑而被我们忽略了,还有一些是个人制作的rom留下了一些比较难以预料的这种坑。