CrashHandler在开发中运用(单例模式)

1.什么是crash?为什么要用?

CrashHandler主要应用于对全局UncaughtException的捕捉,并且根据用户意愿选择是否将其发送给开发者。

也就是说,我们的app通常在开发是会遇到各种crash(崩溃),同时发布之后,也会遇到意想不到的崩溃,开发者为了及时反馈bug,我们就需要一个crash机制,让用户可以将崩溃问题存储并发送给我们,帮我开发者在下一个版本更好的改进。

下面是一个CrashHandler处理崩溃异常的大致流程:

CrashHandler在开发中运用(单例模式)_第1张图片

如何实现?

我们新建一个CrashHandler的类,实现UncaughtExceptionHandler接口,这个接口实在Thread类中,该接口主要是为了当Thread因未捕获的异常而突然终止时,调用处理程序。我们实现这个接口, 重写uncaughtException方法,可以实现自定义处理异常(crash)。

@Override
	public void uncaughtException(Thread thread, Throwable ex) {
		if (!handleException(ex) && mDefaultHandler != null) {
			// 如果自定义的没有处理则让系统默认的异常处理器来处理
			mDefaultHandler.uncaughtException(thread, ex);
		}
	}
handleException是用于自定义错误处理的,收集信息存入文件,发送错误报告等。


这里需要说明,这里运用了单例模式:

因为我们整个app之中处理异常,只需要一个CrashHandler实例来进行,所以我们不必多次创建这个实例。这里就运用了单例模式,我写的懒汉模式(Double Check)

/** 获取CrashHandler实例 ,单例模式 */
	public  static CrashHandler getInstance() {
		if (INSTANCE == null)
		{
			synchronized(CrashHandler.class){
				if(INSTANCE==null){
					INSTANCE = new CrashHandler();
					return INSTANCE;
				}
			}
		}
		return INSTANCE;
	}

好了,就到这里吧。


你可能感兴趣的:(Android)