闪退异常捕获

这里主要是针对崩溃异常捕获(runtimeException)

思路就是整个程序都在自己写的application监控下,然后在application里面去监控异常的情况,以及在捕获异常的时候把当前机型和异常的情况提交给服务端。

直接上代码:


public class MyApplication extends Application {

    public static Context context;

    @Override

    public void onCreate() {

        super.onCreate();

        context = getApplicationContext();

        // 全局闪退异常记录

        CrashUtils crashUtils = CrashUtils.getInstance();

        crashUtils.init();

}

/** 获取全局上下文 **/

    public static Context getContext() {

        return context;

    }

}

帮助类:

/**

* Created by Frank on 2016/12/22.

* 崩溃相关工具类

*/

public class CrashUtils implements Thread.UncaughtExceptionHandler {

    private volatile static CrashUtils mInstance;

    privateThread.UncaughtExceptionHandler mHandler;

    private boolean mInitialized;

    privateCrashUtils() {

    }

    /**单例**/

    public static CrashUtils getInstance() {

        if(mInstance==null) {

            synchronized(CrashUtils.class) {

                if(mInstance==null) {

                    mInstance=new CrashUtils();

            }

        }

    }

    return mInstance;

}

    /*** 初始化{true: 成功;false: 失败}**/

    public boolean init() {

        if(mInitialized)return true;

        mHandler= Thread.getDefaultUncaughtExceptionHandler();

        Thread.setDefaultUncaughtExceptionHandler(this);

        return mInitialized=true;

    }

    @Override

    public void uncaughtException(Thread thread, finalThrowable throwable) {

        newThread(newRunnable() {

        @Override

        public void run() {

        CrashModel crashModel =new CrashModel();

        crashModel.setDateNow(new SimpleDateFormat("yy-MM-dd   HH:mm:ss",Locale.getDefault()).format(newDate()));

        crashModel.setDeviceManufacturer(Build.MANUFACTURER);

        crashModel.setDeviceModel(Build.MODEL);

        crashModel.setAndroidVersion(Build.VERSION.RELEASE);

        crashModel.setAndroidSDK(Build.VERSION.SDK_INT);

        crashModel.setMessage(throwable.getMessage());

        // 接下来就是调用服务端的接口去保存闪退的信息

        }

        }).start();

        if(mHandler!=null) {

            mHandler.uncaughtException(thread,throwable);

        }

    }

}

model类:

/**

* Created by Frank on 2016/12/23.

* 全局异常捕获

*/

public class CrashModel {

/*

************* Crash Log Head ****************

Device Manufacturer: Meizu

Device Model      : m3 note

Android Version    : 5.1

Android SDK        : 22

App VersionName    : null

App VersionCode    : 0

************* Crash Log Head ****************

*/

    privateStringDeviceManufacturer;

    privateStringDeviceModel;

    privateStringAndroidVersion;

    private intAndroidSDK;

    privateStringAppVersionName;

    private intAppVersionCode;

    privateStringMessage;

    privateStringDateNow;

    // get,set 方法

}

加入注册信息-->配置文件(AndroidManifest.xml)中
android:name=".MyApplication"
就加在<application 后面
记得给权限(获取数据,SD卡写入什么的)
小知识点源码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,050评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,039评论 19 139
  • 不管使用的是哪种语言进行程序设计,都会产生各种各样的错误。Java提供了强大的异常处理机制。在Java中所有的异常...
    残月雨纷纷阅读 5,008评论 0 2
  • 冬天的一场大雪悄然而至,一早往窗外望去,一切又是一派银装素裹,可是得给孩子做饭,哪容得下时间去欣赏,去感慨...
    盈盈鱼阅读 1,495评论 0 3
  • 今后在看书过程中,脑海里有任何的想法,直接就在上面做笔记,写下当时的想法。不管在看什么,也不管自己写的是什么。总之...
    益坚阅读 1,585评论 0 0

友情链接更多精彩内容