博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android UncaughtExceptionHandler 原理分析
阅读量:4286 次
发布时间:2019-05-27

本文共 991 字,大约阅读时间需要 3 分钟。

未完待定

当 APP 在线程中跑出了异常就会导致 APP crash。比如我们最常见的 NullPointerException 空指针异常。有些时候我们不希望这种异常导致我们的 APP crash,尤其是在 debug 状态下,程序很大的时候,编译运行一次也不容易,debug 的时候好不容易程序启动起来了,发生了 crash 就不能 debug 执行了,有时候会很耽误开发。

所有有了这个 自定义的异常处理。它可以捕获你的异常,使程序不会crash。

1. 原理

首先介绍 Thread.UncaughtExceptionHandler

4816610-a6e7b18e8c3f5255.png
image.png

简单来说UncaughtExceptionHandler就是用于在线程中当一些系统没有捕获的异常发生的时候来处理这些异常的。你可以使用系统默认的处理方式,你也可以通过Thread.setDefaultUncaughtExceptionHandler()方法设置你自己定义的异常处理。

4816610-fd245855ecc93e8a.png
image.png

注意 Thread.setDefaultUncaughtExceptionHandler(CustomUncaughtExceptionHandler) 后,只能保证当在你的程序中如果 crash 没有发生在 UI 线程(主线程)中而是在别的线程中的时候,这个时候 APP 是不会出现崩溃的现象的。如果在主线程中出现crash后,APP还是会崩溃的。

进一步防止程序出现Crash

开头已经说了,有很多时候虽然我们的APP会因为各种问题闪退,但是在更多的时候我们是不希望,我的APP闪退的这就出现了下面的方法。

首先说明这种方法在Activity初始化的时候可能会导致你的APP出现类似ANR的情况(其实并不是ANR,只是状态看起来像,造成的原因是因为Activity还没有完成初始化,也就是生命周期还没有执行完毕就遇到异常了,导致了页面没法显示,所以在正式发布的APP中还是要慎重使用)

如何使用呢?需要和你的后台商量好,在程序中做好标志控制该不该使用ExceptionHandler来处理。如果你的程序某个地方出现大量crash的时候,而这个功能是在Activity初始化后(可能是由于点击某个按钮触动的问题)这个时候你就可以用ExceptionHandler来处理了,让用户在点击这个按钮后,不至于程序崩溃掉。

转载地址:http://cepgi.baihongyu.com/

你可能感兴趣的文章
三、java-布局(FlowLayout)
查看>>
(四)java-QQ登录界面
查看>>
(五)java 主界面
查看>>
maven安装
查看>>
maven介绍
查看>>
Postman安装
查看>>
Postman(get/post)
查看>>
飞行的小球
查看>>
小球撞墙
查看>>
下大雪
查看>>
上下左右移动小球
查看>>
打字母的游戏
查看>>
鼠标孔令志小球
查看>>
为什么谷歌浏览器无法添加扩展程序
查看>>
swichomege安装
查看>>
复制文件File
查看>>
复制大文件
查看>>
Git使用
查看>>
文件加密与解密
查看>>
jsonp修改 增加callback
查看>>