Android自定义App Crash后的界面(Activity)

最近这两周比较累,眼睛也比较疲劳还稍微有点疼痛,本来打算早点睡觉好好休息一下,可是在例行浏览网页时发现一个刚刚发布的并且一定会提高用户体验的开源程序,这引起了我的兴趣,顿时睡意全无,开始测试起来,即使眼角还是会隐约的有点疼痛,也把内容写出来分享给大家。

先来看一下平时我们使用App遇到崩溃时的界面:

这种崩溃的情况我们经常见到的,每次看到这样的情况就会觉得这App写的真烂,又死了,用户体验非常不好,但这基本上又是不可避免的。但我们作为开发者来说,也许我们要做的就是尽量避免bug的产生,而bug你是知道的,又不是完全能避免的了的,那该怎么办?既然bug是不能完全没有的,崩溃也不会完全不会出现,那我们就去定义崩溃后的界面,看下图:

当崩溃出现时,出现这样一个界面是不是给用户的感觉好多了。

Code:

thanks to Eduard Ereza Martínez 你也可直接依赖其library,但使用library中的代码自己写可以更灵活

1
compile 'cat.ereza:customactivityoncrash:1.1.0'

使用:在Application类中加入

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 @Override
    public void onCreate() {
        super.onCreate();
        //Install CustomActivityOnCrash
        CustomActivityOnCrash.install(this);
        //Now initialize your error handlers as normal
        //i.e., ACRA.init(this);
        //or Crashlytics.start(this);
    }

    Note: 如果有使用ACRA等一定要保证 CustomActivityOnCrash.install(this)在其前加入,
    否则Reporting工具会停止工作

使用中要知道的方法:

1
2
3
4
5
6
7
8
9
//在后台崩溃时是否启动崩溃页默认为true并且在你Api<14时永远都为true
CustomActivityOnCrash.setLaunchActivityEvenIfInBackground(false);
//是否显示崩溃信息
CustomActivityOnCrash.setShowErrorDetails(false);
//设置崩溃页如果不设置则为默认页
CustomActivityOnCrash.setRestartActivityClass(MainActivity.class);
CustomActivityOnCrash.getStackTraceFromIntent(getIntent());
CustomActivityOnCrash.getAllErrorDetailsFromIntent(getIntent());
CustomActivityOnCrash.getRestartActivityClassFromIntent(getIntent());

另外:

1、如果ACRA启用并且讲报告模式(report mode)设置为TOAST或者DIALOG,CrashHelper将失效

2、如果自定义的UncaughtExceptionHandler在CustomActivityOnCrash.install(this)调用之前初始化,你得UncaughtExceptionHandler将不会被调用

3、在4.0以下的系统上,有极少的机型,当crash的时候,可能会不断重启,所以建议在4.0之上的系统使用。

4、要保证app在初始化和崩溃页尽量不要出现崩溃的情况,否则可能进入不断的重启中,CrashHelper对这种情况做检查,但还是会有极小可能出现这种情况。

5、CrashHelper不会避免ANR的情况

6、不能捕获Native errors

7、不能保证在每台设备上都支持

My App: 录屏(Lop)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值