为了账号安全,请及时绑定邮箱和手机立即绑定

开发一个好项目:九、android奔溃日记记录系统

标签:
Android

前一篇文章:开发一个好项目:八、创建view 框架地址 dileber android框架 希望大家能多多star一下

构造自己android奔溃文件日志记录。你的项目如果继承自dileber框架,你的项目将具有自动记录奔溃日志的功能。
奔溃日志的代码类为 AndroidCrash.java

public class AndroidCrash{

    private static AndroidCrash instance = null;

    private Thread.UncaughtExceptionHandler mDefaultCrashHandler;

    private AndroidCrash(){
        // get default
        mDefaultCrashHandler = Thread.getDefaultUncaughtExceptionHandler();

        // install
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, final Throwable ex) {
                // save log
                saveException(ex, true);
                showToast( "很抱歉,程序发生异常,即将推出.");
                try {
                    Thread.sleep(3500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // uncaught
                mDefaultCrashHandler.uncaughtException(thread, ex);
            }
        });
    }

    public static AndroidCrash getInstance() {
        if (instance == null) {
            instance = new AndroidCrash();
        }

        return instance;
    }

    public final void saveException(Throwable ex, boolean uncaught) {
        CrashSaver.save(SApplication.getAppContext(), ex, uncaught);
    }

    public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler) {
        if (handler != null) {
            this.mDefaultCrashHandler = handler;
        }
    }

    /**
     * 进行弹出框提示
     *
     * @param msg
     */
    private void showToast( final String msg) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Looper.prepare();
                UUi.toast(ActivityManager.getCurrentActivity(), msg, Toast.LENGTH_SHORT);
                Looper.loop();
            }
        }).start();
    }

}

该类具有自动记录奔溃日志,在崩溃前一秒会进行友好提示。
记录的日志目录位于sd卡目录的“ Android/data/你的包名/log”方便用户进行清理缓存,
记录的文件可以用于上传奔溃日志等等操作:
如下奔溃日志

count: 3 
time: 2017-02-24 11:50:44 
device: Xiaomi MI 4LTE 
android: 6.0.1 
system: MMB29M 
battery: 100 % 
rooted: no 
ram: 27.0% [1.00 GB] 
disk: 32.0% [12.00 GB] 
ver: 1 caught: no 
network: WIFI 
java.lang.NullPointerException: Attempt to invoke interface method ...
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消