当前位置: 移动技术网 > IT编程>移动开发>Android > Android 应用Crash 后自动重启的方法小结

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

2020年06月14日  | 移动技术网IT编程  | 我要评论

任丘新闻,万达云电信服务器,打印机不能打印

前提

首先,我们肯定要在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 自动重启内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网