android异常捕获,异常拦截,仿奔溃
16lz
2021-01-26
系统异常,空指针,角标越界等都是常见的问题。对于已经上线的应用来说,一旦崩溃了用户体验会变的非常的差,但是平时代码难免会有什么地方判断不到位,那我们为了不让程序崩溃需要将崩溃信息拦截一下就可以了!在一定程度上减少用户体验
这个还可以在控制台上输出错入日志,供大家调试
不多说了,直接上代码
/** * 异常捕获 * */public class NeverCrash { private CrashHandler mCrashHandler; private static NeverCrash mInstance; private NeverCrash(){ } private static NeverCrash getInstance(){ if(mInstance == null){ synchronized (NeverCrash.class){ if(mInstance == null){ mInstance = new NeverCrash(); } } } return mInstance; } public static void init(CrashHandler crashHandler){ getInstance().setCrashHandler(crashHandler); } private void setCrashHandler(CrashHandler crashHandler){ mCrashHandler = crashHandler; new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { for (;;) { try { Looper.loop(); } catch (Throwable e) { if (mCrashHandler != null) {//捕获异常处理 mCrashHandler.uncaughtException(Looper.getMainLooper().getThread(), e); } } } } }); Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { if(mCrashHandler!=null){//捕获异常处理 mCrashHandler.uncaughtException(t,e); } } }); } public interface CrashHandler{ void uncaughtException(Thread t,Throwable e); }}
你没有看错,就这么几行代码就可以减少用户异常的感知度!
这个需要在Application中先初始化一下,
代码如下
public class MyApplication extends Application { public static RequestQueue volleyQueue; private static Context context; public static Context getContext() { return context; } @Override public void onCreate() { super.onCreate(); NeverCrash.init(new NeverCrash.CrashHandler() { @Override public void uncaughtException(Thread t, Throwable e) { Log.d("Jenly", Log.getStackTraceString(e));// e.printStackTrace();// showToast(e.getMessage());//这里打印日志 } });}}
好了,各位快去试一下吧。还是很好用的。
更多相关文章
- 下载并编译CyanogenMod源代码
- Android(安卓)学习之《第一行代码》第二版 笔记(二十)播放多媒体文
- android之填写文本自动补充AutoCompleteTextView和MultiAutoComp
- 我在51CTO的第一篇博客--关于6个小时调试一个小类
- Android(安卓)Framework移植----长按返回键结束程序
- Android(安卓)productFlavors 差异化打包
- 为什么我们可以在非UI线程中更新UI
- 基于web的android图像处理示例(Win7+Apache+PHP+Matlab+Android)
- Android实现使用微信登录第三方APP的方法