app崩溃后捕获异常或自动重启

     假如你开发的app有这个需求的话:崩溃后自动重启或者捕获异常信息。你可以参照下文:


package com.tan.abnormalrestart;

import java.lang.Thread.UncaughtExceptionHandler;

import android.app.Application;
import android.content.Intent;

public class AppContext extends Application
{
	protected static AppContext instance;
	public void onCreate() {
		super.onCreate();
		instance = this;
		Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程  以下用来捕获程序崩溃异常  
	}
	// 创建服务用于捕获崩溃异常  
    private UncaughtExceptionHandler restartHandler = new UncaughtExceptionHandler() {  
        public void uncaughtException(Thread thread, Throwable ex) {  
            restartApp();//发生崩溃异常时,重启应用  
        }  
    };  
    public void restartApp(){
    	Intent intent = new Intent(instance,MainActivity.class);
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		instance.startActivity(intent);
		android.os.Process.killProcess(android.os.Process.myPid());  //结束进程之前可以把你程序的注销或者退出代码放在这段代码之前
    }
}

这个是application级别的应用!
其实关键还是UncaughtExceptionHandler类!各位自己百度google了!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
可以通过捕获全局异常来实现APP崩溃后的重新启动。具体实现步骤如下: 1. 创建一个自定义的Application类,并在onCreate()方法中设置UncaughtExceptionHandler(全局异常处理器)。 ```java public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); } } ``` 2. 实现UncaughtExceptionHandler接口,重写uncaughtException()方法,在该方法中处理异常信息并重启APP。 ```java public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { // 处理异常信息 Log.e("MyUncaughtExceptionHandler", "uncaughtException: " + e.getMessage()); // 重启APP Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName()); PendingIntent pendingIntent = PendingIntent.getActivity( getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000, pendingIntent); // 结束进程 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } } ``` 在uncaughtException()方法中,首先处理异常信息,然后通过AlarmManager和PendingIntent实现重启APP的功能,最后通过killProcess()和System.exit()方法结束进程。 3. 在AndroidManifest.xml文件中注册自定义的Application类。 ```xml <application android:name=".MyApplication" ... </application> ``` 通过以上步骤,即可实现APP崩溃后的自动重启
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值