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);    }}

其实,开发中还得看你们的要求,一般,如果在客户端使用的情况下,最好是能把报错的信息,机型等信息,保存到本地,然后推送到服务器,把这些信息一一统计起来,那对于开发人员来说就更好的优化自己的软件了,所以,我推荐了 夏安明 的这篇博文,同时自己也是把所有的知识点一一整理收集起来,毕竟好记星不如烂笔头。谢谢!

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. 《android framework常用api源码分析》之 app应用安装流程
  5. Android——Scroll分析
  6. Android智能指针SP WP使用方法介绍
  7. android 修改AVD的存放位置
  8. android与javascript交互调用
  9. Android和js、H5进行交互数据(面试必问)

随机推荐

  1. Android开发初体验,提高Android运行效率
  2. 开发可统计单词个数的Android驱动程序(3)
  3. Android牟利之道(二)--广告平台的介绍
  4. Android中实现跨进程通信(IPC)的方式(三)
  5. Study on Android【三】--Intent消息传递
  6. Android开发人员终于在“app-构建控制台
  7. 为什么要用Android(安卓)Studio?
  8. Android中显示网络上的图片
  9. android重力感应模拟器sensorsimulator
  10. [置顶] android 数据库版本升级