Android应用不可避免地会发生crash,也成之为崩溃。无论你的程序写得多么的完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者糟糕的网络情况,当crash发生时,系统会kill掉正在执行的程序,现象是闪退或者提示用户程序已经停止运行。这是对用户来说很不友好,也是开发者不愿意看到的。
但是也并不是没有办法捕获,其实系统给我们提供了Tread.UncaughtExceptionHandler就是默认的未捕获异常的处理,我们只要定义一个类实现它,然后重写uncaughtException方法,把异常打印出来就可以了。
STEP 1:
/**
* function: 截获崩溃日志:当程序产生未捕获异常
* Created by lzq on 2017/8/10.
*/
public class CrashHandler implements Thread.UncaughtExceptionHandler{
//手机存储路径
private final String logPath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Crash";
private static final String TAG = CrashHandler.class.getSimpleName();
/** 系统默认的异常处理器(默认情况下,系统会终止当前的异常程序) */
private Thread.UncaughtExceptionHandler mDefaultCrashHandler;
private Context mContext;
private String mProcessName;
/** CrashHandler 实例 */
private static CrashHandler instance = new CrashHandler();
/** 私有构造 保证只有一个CrashHandler实例*/
private CrashHandler(){
}
/** 单例模式 */
public static CrashHandler getInstance(){
return instance;
}
/** 初始化 */
public void init(Context context){
mDefaultCrashHandler = Thread.getDefaultUncaughtExce