900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > android 程序崩溃后自动重启 Android 应用Crash 后自动重启的方法小结

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

时间:2024-02-10 23:21:25

相关推荐

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 自动重启内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: -06-09

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。