栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android 应用Crash 后自动重启的方法小结

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/154037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号