android 控制app,Android-控制整个APP的异常收集与处理

本文介绍了一个名为CrasHandler的类,用于Android应用的异常收集与处理。它实现了Thread.UncaughtExceptionHandler接口,当程序遇到未捕获的异常时,会收集设备信息、错误详情并显示给用户,随后自动退出应用。务必在Application初始化时调用initCrasHandler方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecommon.library.exception;importandroid.content.Context;importandroid.os.Build;importandroid.os.Looper;importcommon.library.config.AppConfig;importcommon.library.manager.AppManager;importcommon.library.utils.LogUtil;/*** @Author Liudeli

* @Describe:控制整个App的异常收集与处理,使用前记得要在Application中初始化initCrasHandler*/

public class CrasHandler implementsThread.UncaughtExceptionHandler {private static final String TAG = CrasHandler.class.getSimpleName();private static final String TAG_THIS_APP_NAME =AppConfig.APP_NAME;private static final String ERROR_INFO = "后台检测到程序异常,程序在五秒内自动关闭,请告知开发人员刘德利来解决此问题";privateContext mContext;privateThread.UncaughtExceptionHandler uncaughtExceptionHandler;privateCrasHandler() {}private static CrasHandler crasHandler = null;public staticCrasHandler getInstance() {if (null ==crasHandler) {//synchronized (CrasHandler.class) {//if (null == crasHandler) {

crasHandler = newCrasHandler();//}//}

}returncrasHandler;

}/*** 初始化设置(把系统的修改成自身的来控制)*/

public voidinitCrasHandler(Context mContext) {this.mContext =mContext;

Thread.setDefaultUncaughtExceptionHandler(this);

uncaughtExceptionHandler=Thread.getDefaultUncaughtExceptionHandler();

}

@Overridepublic voiduncaughtException(Thread t, Throwable e) {if(isHandler(e)) {

handlerException(t, e);

}else{

uncaughtExceptionHandler.uncaughtException(t, e);

}

}/*** 判断是否为空,才能知道是否需要自己处理

*@parame

*@return

*/

private booleanisHandler(Throwable e) {if (null ==e) {return false;

}else{return true;

}

}/*** 处理我需要处理的异常信息,并告知用户,并退出当前应用程序

*@paramt

*@paramex*/

private voidhandlerException(Thread t, Throwable ex) {newThread(){

@Overridepublic voidrun() {super.run();//默认下,Android是没有开启Looper消息处理的,主线程除外

Looper.prepare();

LogUtil.toastL(mContext, ERROR_INFO);

Looper.loop();

}

}.start();//收集异常信息

collectException(ex);try{

t.sleep(2000);

}catch(Exception e) {

e.printStackTrace();

}//关闭APP

AppManager.getInstance().deleteAllActivity();//结束当前应用程序进程

android.os.Process.killProcess(android.os.Process.myPid());//结束虚拟机,是否所有内存

System.exit(0);

}/*** 收集异常信息

*@parame*/

private voidcollectException(Throwable e) {final String deviceInfo = Build.VERSION.SDK_INT + ", " + Build.MODEL + ", " +Build.PRODUCT;final String errorInfo =e.getMessage();newThread(){

@Overridepublic voidrun() {super.run();

LogUtil.e(TAG_THIS_APP_NAME,"deviceInfo:" + deviceInfo + ", errorInfo:" +errorInfo);

}

}.start();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值