[Android] 异常崩溃自重启

本文介绍了如何通过实现自定义的UncaughtExceptionHandler来处理程序中未被捕获的异常,并探讨了几种关闭并重启应用的方法,包括使用killProcess和System.exit(0)等手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序遇到异常时会Crash,通常可以通过try Catch的方法来捕获异常,并决定该异常是否抛出,造成程序的Crash

但是当异常语句不在try catch块内时,将不能捕获。

此时通过 uncaughtException(Thread thread, Throwable ex) 来捕获uncaught即原来没有捕获到的异常。

通常自己实现一个handler继承自UncaughtExceptionHandler,UncaughtExceptionHandler中实现uncaughException方法。

//代码不在身边下次再贴


此时,可以再uncaughException中对这类非预期的异常进行处理,可以进行错误日志记录等行为,这里对其进行崩溃后的自动重启。

首先程序抛异常后,要关闭整个应用。

网上常见这三种方法:

-android.os.Process.killProcess(android.os.Process.myPid());
-ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        am.restartPackage("lab.sodino.errorreport");
-System.exit(0)

第二种忘记试了成功没,但是应该是一种不太提倡的方法。

方法一和三都是比较暴力的关闭应用,但是也简单有效干净,会将应用的整个进程都杀死,之后重启的应用将不再是这个进程下。

当时我自己追求的效果是在保有原进程,故有另外一套比较流行的方式,即每个Activity拥有一个收到广播自Destory的方法,然后在刚才这个地方发出广播通知所有的Activity自己走自销毁的流程。这样的方式比较遵循程序原来的生命周期,影响大概大约可能会比较小。。最主要是这样的方式就保留了原进程。

此时在这里可以通过startActivity自重启这个应用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值