android 程序崩溃后自动重启,Android 应用Crash 后自动重启的方法小结

前提

首先,我们肯定要在application里面注册一个crashhandler,监听应用crash

public class testapplication extends multidexapplication {

private static testapplication minstance;

@override

public void oncreate() {

super.oncreate();

thread.setdefaultuncaughtexceptionhandler(new crashhandler());

}

然后在这个crashhandler 想办法重启应用。有两种方法如下:

方法1.通过alarmmanager

public class crashhandler implements thread.uncaughtexceptionhandler {

@override

public void uncaughtexception(thread t, throwable e) {

//重启app

/**

* 这种方式 功能是可以达成

* 但是有问题就是如果说你的app挂了 这时候会显示系统桌面

* 然后你的app有启动起来了

* 给人的感觉不太好

*/

intent intent = new intent();

context context = testapplication.getinstance();

intent.setclass(context, mainactivity.class);

intent.addflags(intent.flag_activity_new_task);

context.startactivity(intent);

pendingintent pendingintent = pendingintent.getactivity(context,0,intent,pendingintent.flag_one_shot);

alarmmanager alarmmanager = (alarmmanager) context.getsystemservice(context.alarm_service);

alarmmanager.set(alarmmanager.rtc,system.currenttimemillis() + 100,pendingintent);

process.killprocess(process.mypid());

system.exit(0);

}

}

方法2:

使用第三方库

implementation 'com.jakewharton:process-phoenix:2.0.0'

public class crashhandler implements thread.uncaughtexceptionhandler {

@override

public void uncaughtexception(thread t, throwable e) {

processphoenix.triggerrebirth(testapplication.getinstance());

}

}

这个第三方库的原理是:

当app 崩溃的时候,processphoenix.triggerrebirth(testapplication.getinstance());就会触发启动另外一个进程的activity,然后把当前崩溃的进程结束掉。在新进程的activity里面,把应用在自己的进程里面的启动起来。

总结

到此这篇关于android 应用crash 后自动重启的文章就介绍到这了,更多相关android 自动重启内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值