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

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

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

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

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

如何实现?

我们新建一个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;
	}

好了,就到这里吧。

时间: 2024-10-12 09:27:57

CrashHandler在开发中运用(单例模式)的相关文章

5_Singleton 游戏开发中的单例模式

1 强制类只有一个实例 2 提供全局的访问 ###为什么使用: ``` 1 如果没有地方访问这个类,则不会创建实例 2 静态类在main之前实例化, 可以尝试Lazy initialization 3 派生单例类, 获得单例能力 ``` ###缺点: ``` 1 代码变得难懂, 上下文切换等等 2 增加了耦合度 3 并行不友好 4 惰性初始化 使你失去控制力 ``` ###思考: Many of the singleton classes I see in games are “managers

《JavaScript设计模式与开发实践》—— 单例模式

单例模式的定义是: 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器中的 window 对象等.在 JavaScript 开发中,单例模式的用途同样非常广泛.试想一下,当我们单击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的,无论单击多少次登录按钮,这个浮窗都只会被创建一次,那么这个登录浮窗就适合用单例模式来创建. (1) 透明的单例模式 在下面的例子中,我们将使用 CreateDiv

Android开发中无处不在的设计模式——单例模式

对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的同学,这里推荐2本书.一本是Head First系列的Head Hirst Design Pattern,英文好的可以看英文,可以多读几遍.另外一本是大话设计模式. 这篇文章介绍一个模式,就是单例模式,因为个人觉得这个模式理解起来最容易,而且不是太复杂. 首先了解一些什么是单例,从名字中就可以听出来

Android开发中的设计模式—单例模式的详细解释

Android开发中的设计模式-单例模式的详细解释: 1. 单例模式的特点: (1).保证一个类只有一个实例 (2).提供一个能访问到他的全局访问点. (3).构造函数声明为私有的,从而阻止了在类外创建对象 2. 种类: (1).饿汉式单例模式 (2).懒汉式单例模式 3. 代码分析: (1).饿汉式单例模式: //类加载的时候对象就实例化了. private static Single mSingle = new Single(); public static Single getInstan

Android开发中常见的设计模式(一)——单例模式

首先了解一些单例模式的概念. 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 这样做有以下几个优点 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中. 保持程序运行的时候该中始终只有一个实例存在内存中 其实单例有很多种实现方式,但是个人比较倾向于其中1种.可以见单例模式 代码如下 public class Singleton { private static volatile Singleton instance = null; private Sin

Java开发中的23种设计模式详解(转)

设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

0. Java开发中的23种设计模式详解(转)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

iOS开发中常用的几种设计模式

下面是iOS开发中比较常用的几种设计模式.详情如下所示: (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求.列表row个数delegate自定义的delegate (二)观察者模式应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息.优势:解耦合敏捷原则:接口隔离原

Java开发中的23种设计模式

一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 其实还有两类:并发型模式和线程池模式.用一个图片来整体描述一下: 二.设计模式的六大原则 1.开闭原则(Open Clo