android 自定义异常,AndroidCrashHelper: Android Crash Helper。安卓APP自定义异常处理器,当APP触发未捕获的异常时,使用该处理器自定义有好的奔溃提示页...

AndroidCrashHelper

Android Crash Helper。安卓APP自定义异常处理器,Release状态下意外奔溃提示更加友好(代替系统默认的那个讨厌的对话框),不影响Debug模式下LogCat的打印。

************************************************************************

** _oo0oo_ **

** o8888888o **

** 88" . "88 **

** (| -_- |) **

** 0\ = /0 **

** ___/'---'\___ **

** .' \\\| |// '. **

** / \\\||| : |||// \\ **

** / _ ||||| -:- |||||- \\ **

** | | \\\\ - /// | | **

** | \_| ''\---/'' |_/ | **

** \ .-\__ '-' __/-. / **

** ___'. .' /--.--\ '. .'___ **

** ."" '< '.___\__/___.' >' "". **

** | | : '- \'.;'\ _ /';.'/ - ' : | | **

** \ \ '_. \_ __\ /__ _/ .-' / / **

** ====='-.____'.___ \_____/___.-'____.-'===== **

** '=---=' **

************************************************************************

How to use

###下载AndroidCrashHelper,复制其中的“CrashHelper”到新项目作为依赖项:

dependencies {

compile project(':CrashHelper')

}

最简单暴力的使用方法只需在AndroidManifest.xml中加入两句代码:

android:name="cn.qqtheme.framework.AppContext"

...>

...

下面是更灵活的应用。。。

分别建立一个Application子类及Activity子类,并在AndroidManifest.xml中声明:

android:name=".DemoApp"

...>

...

android:name=".MyCrashActivity"

android:exported="false">

...

注:AppContext类负责初始化设置自定义的奔溃报告页,CrashActivity为默认的奔溃报告页。

如果未在Application的onCreate方法里调用“AppContext.initialize()”,自定义异常处理器将不会生效。

如果没有调用“AppContext.initialize()”或CrashHelper.setCrashActivityClass()”设置Activity,

或者没有在AndroidManifest.xml中声明CrashActivity或含有action为“liyujiang.intent.action.CRASH_ERROR”的Activity,

那么将在SD卡根目录下生成crash.log文件(前提是要有WRITE_EXTERNAL_STORAGE权限)。

法一、可以继承自任何Application及Activity,然后调用AppContext.initialize()初始化:

public class DemoApp extends Application {

@Override

public void onCreate() {

super.onCreate();

AppContext.initialize(this, MyCrashActivity.class);

}

}

public class MyCrashActivity extends FragmentActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_custom_crash);

String stackTrace = CrashHelper.getStackTraceFromIntent(getIntent());

String deviceInfo = CrashHelper.getDeviceInfo();

...

}

}

法二、可以直接继承自AppContext及CrashActivity:

public class DemoApp extends AppContext {

@Override

public void onCreate() {

super.onCreate();

//initialize other you want

}

}

public class MyCrashActivity extends CrashActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_custom_crash);

TextView tv = (TextView)findViewById(R.id.stacktrace);

tv.setText(stackTrace);

...

}

}

Screenshots

1a6ecf9dee6eaf6ed3b5934fbec4066d.png

a297a7c43c59871c2ef301e15955dd45.gif

b2e34846f0677234d0224e5ef82d8b03.png

Thanks

Contacts

Tencent QQ: 1032694760

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值