关闭

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

1196人阅读 评论(0) 收藏 举报
分类:

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

先来看一下平时我们使用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)

0
0
查看评论

android 中处理崩溃异常并重启程序出现页面重叠的问题

android开发中经常会遇到程序异常,而已常常会遇到一出现异常APP就自动重启了,而已如果你的项目中应用到Fragment的切换的话,会出行页面重叠的现象。今天为了解决这个问题看了不少大牛的博客。最后终于把问题解决了,下面就把解决的方法做一个介绍。 总的问题解决定向是处理崩溃异常的方法。先说说我...
  • jiang547860818
  • jiang547860818
  • 2016-12-14 16:09
  • 2212

App crash原因以及解决办法

为什么App会出现崩溃呢?百度了一下,查到和App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,如下: 1. 内存管理错误​:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。或是内存泄露,程序运行的时间越长,所占用的内存越...
  • yangtuxiaojie
  • yangtuxiaojie
  • 2015-07-29 10:21
  • 4526

从APp跳设置界面

1 2 3 4 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];  if ([[UIApplication...
  • Chowbindeblog
  • Chowbindeblog
  • 2016-04-22 10:29
  • 224

Android Crash 问题分析以及解决

Crash问题(Java与Native) 1.问题介绍 Crash问题,无论是java侧还是native侧,在日常测试中经常会遇到。 Crash问题一般我们可以分为两类,一类是java侧的crash问题也就是抛出exception问题,这一类相对简单。 另一类是native侧的问题,由于是c...
  • y851992774
  • y851992774
  • 2016-11-14 17:56
  • 278

ACRA 和自定义布局

ACRA : Application crash report for android 作用: 为自己的应用找bug 使用步骤:参考文档 自定义布局的实现:流程图参照流程图:当有孩子时,是否需要对孩子控件大小进行布置,如果需要就得重写onMeasure()这个方法调用child.layout()方法...
  • an13531829360
  • an13531829360
  • 2016-09-05 20:49
  • 180

Retrofit+RxJava实现app崩溃处理(一)上传文件

这里主要讲一下当软件运行崩溃时,将错误日志保存到本地,然后上传到服务器 1.新建CrashHelper类实现Thread.UncaughtExceptionHandler的接口public class CrashHandler implements Thread.UncaughtException...
  • shma1022
  • shma1022
  • 2017-04-22 11:07
  • 593

Android CrashHandler 自定义崩溃异常捕获

当APP 异常奔溃时,使用Toast提示,并关闭APP,收集错误信息保存并上报 需求:由于android机型的碎片化,我们在开发时无法对所以机型进行测试,因此在可能的崩溃发生时,我们应当做一些事情来为我们提供更多信息以便改进,同时也能然崩溃发生时的用户体验得到一些改善。例如程序崩溃后的重启APP、...
  • superchao_5
  • superchao_5
  • 2016-07-04 21:35
  • 2764

UncaughtExceptionHandler捕获程序异常退出并做相应操作

UncaughtExceptionHandler介绍   可以为任何一个Thread设置一个UncaughtExceptionHandler。   当然也可以为所有Thread设置一个默认的UncaughtExceptionHandler,通过调用Thread.setDefa...
  • adayabetter
  • adayabetter
  • 2016-04-13 21:20
  • 641

CustomActivityOnCrash-自定义崩溃界面并带错误日志

github项目CrashCustomActivity感谢作者做出的贡献。 1、添加依赖库: dependencies { compile 'cat.ereza:customactivityoncrash:1.5.0' }2、重写Application,在AndroidM...
  • jiangtea
  • jiangtea
  • 2016-11-21 10:59
  • 775

Android中处理崩溃异常

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天...
  • liuhe688
  • liuhe688
  • 2011-07-04 19:28
  • 107294
    个人资料
    • 访问:1455367次
    • 积分:16222
    • 等级:
    • 排名:第768名
    • 原创:257篇
    • 转载:76篇
    • 译文:15篇
    • 评论:942条
    关于我
    测试播放器
    博客专栏
    最新评论
    统计