Android自定义App Crash后的界面(Activity)
2015-11-18 20:09
357 查看
最近这两周比较累,眼睛也比较疲劳还稍微有点疼痛,本来打算早点睡觉好好休息一下,可是在例行浏览网页时发现一个刚刚发布的并且一定会提高用户体验的开源程序,这引起了我的兴趣,顿时睡意全无,开始测试起来,即使眼角还是会隐约的有点疼痛,也把内容写出来分享给大家。
先来看一下平时我们使用App遇到崩溃时的界面:
这种崩溃的情况我们经常见到的,每次看到这样的情况就会觉得这App写的真烂,又死了,用户体验非常不好,但这基本上又是不可避免的。但我们作为开发者来说,也许我们要做的就是尽量避免bug的产生,而bug你是知道的,又不是完全能避免的了的,那该怎么办?既然bug是不能完全没有的,崩溃也不会完全不会出现,那我们就去定义崩溃后的界面,看下图:
当崩溃出现时,出现这样一个界面是不是给用户的感觉好多了。
Code:
thanks to Eduard Ereza Martínez 你也可直接依赖其library,但使用library中的代码自己写可以更灵活
使用:在Application类中加入
使用中要知道的方法:
另外:
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)
先来看一下平时我们使用App遇到崩溃时的界面:
这种崩溃的情况我们经常见到的,每次看到这样的情况就会觉得这App写的真烂,又死了,用户体验非常不好,但这基本上又是不可避免的。但我们作为开发者来说,也许我们要做的就是尽量避免bug的产生,而bug你是知道的,又不是完全能避免的了的,那该怎么办?既然bug是不能完全没有的,崩溃也不会完全不会出现,那我们就去定义崩溃后的界面,看下图:
当崩溃出现时,出现这样一个界面是不是给用户的感觉好多了。
Code:
thanks to Eduard Ereza Martínez 你也可直接依赖其library,但使用library中的代码自己写可以更灵活
1 | compile 'cat.ereza:customactivityoncrash:1.1.0' |
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)
相关文章推荐
- Swift语言的内存管理哦,还等什么?点进来!
- 【Android】从零开始
- 新书Effective Objective-C 2.0
- Android一分钟了解OOM
- iOS 第三方框架-MJExtension
- Android多点触控
- UML类图几种关系的总结
- error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCom
- cocos2dx-3.5 Windows中android开发环境搭建
- WebView使用
- swift 快速奔跑的兔几 本节的内容是:使用沙盒儿
- APP应用测试技巧
- 关于Android中Runtime.exec()方法的使用误区
- 打造简易NineoldAndroids动画库,深入理解Android动画原理
- Android-接口回调
- Android性能测试之概述(一)
- Android多媒体分析-通过MediaStore获取Audio信息
- 如何在xcode7上免开发者账号进行ios程序真机测试
- Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
- Object-C中的集合类