金枪不倒的app

1.因为项目原因,总之就是需要一个app永不闪退,但是肯定会有些错误(如显示不全,点击按钮没反应或其他),注意是金枪不倒,不是毫无bug,没bug的程序被人发明出来那还得了。

2.https://www.jianshu.com/p/01b69d91a3a8 这个文章还可以。

3.有一个叫UncaughtExceptionHandler的接口,大概看名字就知道,就是未捕捉错误处理器。实现这个接口uncaughtException并Thread.setDefaultUncaughtExceptionHandler(接口具体实现)即可,那么所有未捕捉错误都会在此执行,默认的我没看,大概是打出日志并退出所有程序。所以若我们在新接口里不做任何事,就不会出现闪退(程序没有杀死)。

4.但是会造成其他问题,因为主线程调用完uncaughtException方法后就已经结束了,所以程序会无响应,即ANR?。过一会也会退出程序

5.应对这个上面所贴网址做的措施是,一开始就在主线程loop()中运行无限loop(),而子线程未捕捉错误方法中不做处理。即可以实现金枪不倒的app。

6.以上不好的地方是在一开始无论有没有错程序都在自己手动建立的loop()上运行,让我非常不爽。所以想有没方法在出现错误时才运行loop(),所以在uncaughtException方法中判断错误来自主线程时建立loop,而子线程时不做处理。这样就可以金枪不倒。

7.实际上uncaughtException一般用于捕捉闪退错误然后记录日志上传,这样用比较少,因为线上的app一般闪退比错误显示要好,但感觉安卓已经挺多做与硬件结合的东西(如广告机,电子班牌机,校园充值系统),这种时候维护困难(硬件分布全国各地),如若有闪退问题(连远程更新都用不了),所以金枪不倒有些作用。

8.但实际上没几个人这么干(估计),而且我自己也觉得怪怪的。

9.任何线程在触发异常时运行完uncaughtException即会结束该线程。

注:loop(),几乎安卓程序就运行在这个里面,我也半知不解,这也是我觉得没把握的难点。望请教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值