Android 中常见的应用崩溃问题(一)
上一周我和大家 分享了关于我们AndroidApplication层中开发软件时,常用到的一个小技巧,用UnCaughtExceptionHalder去捕获全局的异常.可以提高用户体验.但是无法完全的保证应用的意外发生,经过这一周我们队CAS-A项目的调试,发现Android端三大崩溃都会存在.简单说一说我了解的情况:
一RuntimeException这个是属于Java里面的机制,上一周已经简单聊过了,我们也在应用常会做对应的保护.
二 ANR(ApplicationNot Responsing)通俗的说就是我们在玩手机应用时或在 PC操作一些应用时有时候会出现的程序或应用为响应的状态.这个时候系统会我们弹出对话框,是继续等待还是,结束程序.好吧我承认我是急性子,我一般都是结束应用的.这个在Android这里,出现这种情况,一般是有比较耗时的操作在UI线程进行,系统对每个组件分配的响应时间也是不同的.四大组件中.Activity是5秒,广播是10秒,服务是20秒,也就是说,在这些对应的组件内进行操作的响应时间要是超过了,就会出现ANR.
所以我们一般把,网络访问\数据库的操作\修改位图等高耗时或者潜在耗时的事情放在子线程,而用Hanlder机制进行线程间的通讯.同时在可能出现耗时的地方加入ProgressBar让用户对界面的卡顿有一定程度上的理解 .同时也有 类似于捕获Exception的方法让我们在用户看见对话框前做出一些处理------我们可以注册接收ANR的广播,然后在收到广播后做一些操作(如:不让弹出对话框,重启等).
三 Native信号异常这个是由于SO包的C代码或者C++代码的一些问题,产生Native 信号异常,然后应用直接挂掉.这个也有对应处理的方法,不过由于我现在对C和JNI遗忘的比较多.所以就不在此卖弄.大家感兴趣的可以找找相关的处理方式.等我后面把C捡回来了在和大家聊.