android 程序异常捕捉处理
16lz
2021-12-04
android 实际开发中,我们的程序往往因为琳琅满目的android机型以及各种商家修改后的android系统,导致我们的程序经常会出现各种bug.而这种问题我们有由于精力有限或者其它各种问题,往往不能一一找出来。所以我们在系统Crash的基础上,重写了Crash。
今天,我将友情推荐在这块写的非常不错的一个博客(夏安明)的博文:
Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
.
好吧!高人的也推荐了,那我现在就推荐推荐下我自己平时运用中简略的写法吧!呵呵呵,听着看着,感觉有点毛遂自荐了!大家不喜勿喷啊。
/** * @类名:CatchHandler * @类描述:监测程序闪退,直接注销掉整个程序,然后重启回到主界面 * @修改人: * @修改时间: * @修改备注: * @版本: */public class CatchHandler implements UncaughtExceptionHandler { private Context mContext; private static CatchHandler mCatchHandler = new CatchHandler(); private CatchHandler() {} public static CatchHandler getInstance() { return mCatchHandler; } /** * @方法说明:初始化数据 * @方法名称:init * @param context * @返回值:void */ public void init(Context context) { mContext = context; Thread.setDefaultUncaughtExceptionHandler(this); } @Override public void uncaughtException(Thread thread, Throwable ex) { /**如果是主线程出现异常闪退**/ if (thread.getName().equals("main")) { ToastException(thread, ex); try { /**时间休眠的越小,那你看到黑屏的时间也越小。**/ Thread.sleep(300); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } /**这里调用的是我程序中重写的退出程序的方法**/ //MyApplication.outApp(); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); } else { handleException(thread, ex); } } /** * @方法说明:弹出土司框,这个土司必须要在线程中弹出,不然会报错 * @方法名称:ToastException * @param thread * @param ex * @返回值:void */ private void ToastException(final Thread thread, final Throwable ex) { new Thread() { @Override public void run() { Looper.prepare(); Toast.makeText(mContext, "×××出现异常,操作失败!", Toast.LENGTH_LONG).show(); Looper.loop(); } }.start(); } /** * @方法说明:异常处理方法 * @方法名称:handleException * @param thread * @param ex * @返回值:void */ private void handleException(final Thread thread, final Throwable ex) { /**这里我是当出现了异常,然后我就跳转到我的登录界面。还是看大家的需要**/ Intent intent = new Intent(mContext, MyActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); }}
其实,开发中还得看你们的要求,一般,如果在客户端使用的情况下,最好是能把报错的信息,机型等信息,保存到本地,然后推送到服务器,把这些信息一一统计起来,那对于开发人员来说就更好的优化自己的软件了,所以,我推荐了 夏安明 的这篇博文,同时自己也是把所有的知识点一一整理收集起来,毕竟好记星不如烂笔头。谢谢!
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- 《android framework常用api源码分析》之 app应用安装流程
- Android——Scroll分析
- Android智能指针SP WP使用方法介绍
- android 修改AVD的存放位置
- android与javascript交互调用
- Android和js、H5进行交互数据(面试必问)