Android UncaughtExceptionHandler 记录异常并重启程序

原创 2016年06月02日 00:14:18

异常捕获主要是在全局的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

全部捕获异常之后重启程序

经过全局捕获之后,关闭崩溃的进程,然后重启程序入口。 package com.officialcar.offcialvehicles.utils; import android.content.C...
  • zhangli_
  • zhangli_
  • 2016年06月27日 13:31
  • 406

Android使用UncaughtExceptionHandler捕获全局异常

1. 前言Android应用出现crash时,会出现“程序异常退出”的提示,随后应用关闭,用户体验非常不好。一般为了捕获应用运行时异常后做出适当处理,给出合理提示时,我们开发中可以继承Uncaught...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2016年09月10日 10:31
  • 2239

利用Android UncaughtExceptionHandler捕获崩溃异常

在编写APK程序时,通常会导致程序崩溃的异常,在通常情况下这些异常不能被捕获到,利用Thread.UncaughtExceptionHandler就可以捕获到这些异常。从名字就可以看出来Uncaugh...
  • yujian_bing
  • yujian_bing
  • 2013年01月28日 09:55
  • 3021

Android捕获异常处理——UncaughtExceptionHandler

日常代码的编写中,你遇到的程序崩溃肯定不会少。 空指针、转型失败、数组越界之类的,你应该都有碰到。当你碰到这些的时候,你代码中已经有写了try-catch,但是它并没有把这可能的异常捕获处理。 你...
  • yangzhaomuma
  • yangzhaomuma
  • 2015年12月17日 19:24
  • 957

【Android开发】UncaughtExceptionHandler接口详解

Android开发:UncaughtExceptionHandler接口详解
  • BrilliantEagle
  • BrilliantEagle
  • 2015年09月14日 20:49
  • 1714

手写CrashHandler实现UncaughtExceptionHandler拦截android异常

手写CrashHandler实现UncaughtExceptionHandler拦截android异常作者:码字员小D有点复杂,虽然知道原理,但是并不好从哪开始写了。。。。。。首先这是个需要在整个ap...
  • fancylovejava
  • fancylovejava
  • 2015年04月30日 16:16
  • 10962

Android UncaughtExceptionHandler捕获crash的全局异常

Android App在crash的时候可以做一些操作,比方说记录异常文件并上传到服务器,或者接入类似腾讯bugly的异常分析平台,一个简单的做法就是前者,实现的代码如下: package com....
  • yeheng223
  • yeheng223
  • 2016年07月04日 19:05
  • 275

实现UncaughtExceptionHandler来实现获取应用全局的crash信息

Android应用不可避免的会出现各种崩溃crash,平时我们可能会通过try-catch来捕获异常,可是我们总不可能每一段代码都try-catch,所以我们还是会有很多捕获不到的异常,而且一旦应用发...
  • wozuihaole
  • wozuihaole
  • 2017年04月18日 10:48
  • 243

学习笔记之Android利用UncaughtExceptionHandler捕获全局异常

一、概述 现如今,Android手机越发的普及,手机的品牌与型号五花八门、Android版本的不同,在开发过程中运行良好的app到了发布上线后安装到某款手机上说不定就出现异常崩溃的现象,开发者不可能在...
  • zhuiyi1820
  • zhuiyi1820
  • 2017年01月04日 15:55
  • 409

Android Thread.UncaughtExceptionHandler捕获

在Java 的异常处理机制中: 如果抛出的是Exception异常的话,必须有try..catch..进行处理,属于checked exception。 如果抛出的是RuntimeExceptio...
  • wangbole
  • wangbole
  • 2012年11月08日 12:03
  • 17680
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android UncaughtExceptionHandler 记录异常并重启程序
举报原因:
原因补充:

(最多只允许输入30个字)