司马懿的西山居

如果觉得有帮助,就顶顶顶一个,或者关注、关注、关注一下,转载请注明出处。...

Android UncaughtExceptionHandler 记录异常并重启程序

异常捕获主要是在全局的Application中来处理的,Android提供了一个CrashHandler用来进行错误处理。

intent添加 “Intent.FLAG_ACTIVITY_NEW_TASK” 标记的原因是——Content的startActivity方法,需要开启一个新的task。如果使用 Activity的startActivity方法,不会有任何限制,因为Activity继承自Context,重载了startActivity方法。所以如果是context启动Activity就需要添加这个标记。

package com.chy.global;

import java.lang.Thread.UncaughtExceptionHandler;

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

import com.chy.activity.MainActivity;
import com.chy.utils.LogUtils;

public class CrashApplication extends Application {
	//异常处理器
	private CrashHandler crashHandler = null;
	
	@Override
	public void onCreate() {
		super.onCreate();
		crashHandler = new CrashHandler(this);
		Thread.setDefaultUncaughtExceptionHandler(crashHandler);
	}

	class CrashHandler implements UncaughtExceptionHandler {

		private Application app = null;
		
		public CrashHandler(Application app) {
			this.app = app;
		}
		
		@Override
		public void uncaughtException(Thread thread, Throwable ex) {
			ex.printStackTrace();
			LogUtils.log(ex);
			// 此处示例发生异常后,重新启动应用
			Intent intent = new Intent(app, MainActivity.class);
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			app.startActivity(intent);
			android.os.Process.killProcess(android.os.Process.myPid());
		}
	}
	
}


阅读更多
版权声明:转载请注明出处——http://blog.csdn.net/chy555chy/article https://blog.csdn.net/chy555chy/article/details/51560196
个人分类: Android
上一篇Android UDP
下一篇Qt 多线程(QThreadPool)
想对作者说点什么? 我来说一句

android 处理崩溃异常重启程序

2016年10月26日 18.75MB 下载

没有更多推荐了,返回首页

关闭
关闭