Android程序崩溃统一处理机制

Android程序崩溃统一处理机制

编程入门hacker2017-12-20 7:40:319055A+A-

在运用公布之后,因为安卓机型的各有不同 ,将会会出現各式各样的难题,此刻要是人们能够将这种信息内容搜集起來,并开展改动就很非常好了。下边就来了解一下如何处理程序奔溃之后,错误信息的手机上。

Java中早已出示了1个插口Thread.UncaughtExceptionHandler来对运作时的出现异常开展解决。只必须建立这一插口,并覆写 public void uncaughtException(Thread thread, Throwable ex) 方式只能。

因为Application是Android运用起动的第一位通道,因此人们建立自个的Application,他会去建立Thread.UncaughtExceptionHandler插口。

应用的那时候有一下下好多个常见问题

1. 必须在manifest文档中的application连接点,加上你自个建立的Application类,比如

  全句洗稿

        android:name=".CrashApplication"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

2.在建立的Application类的onCreate方式中,设定本类为默认设置的出现异常Cpu,加上给出编码:

Thread.setDefaultUncaughtExceptionHandler(this);

3.在uncaughtException(Thread thread, Throwable ex) 方式中加上建立。

实例编码给出,建立了搜集产生出现异常的手机上机器设备信息内容和出现异常信息内容,并将这种信息内容储存至当地

public class CrashApplication extends Application implements UncaughtExceptionHandler {

// 单例模式

private static CrashApplication INSTANCE;

private Context mContext;

// 用于储存设备信息内容和出现异常信息内容

private Map info = new HashMap();

// 用以备份时间,做为系统日志文件夹名称的部分

private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");

public CrashApplication() {

}

public static CrashApplication getInstance() {

  if (INSTANCE == null) {

   INSTANCE = new CrashApplication();

  }

  return INSTANCE;

}

@Override

public void onCreate() {

  super.onCreate();

  mContext = this;

  // 设定该CrashHandler为程序流程的默认设置Cpu

  Thread.setDefaultUncaughtExceptionHandler(this);

}

public void uncaughtException(Thread thread, Throwable ex) {

  // TODO,这里你能解决当 程序流程奔溃时你要做的事儿

  // 搜集机器设备参数信息

  collectDeviceInfo(mContext);

  // 储存系统日志文档

  saveCrashInfo2File(ex);

}

public void collectDeviceInfo(Context context) {

  try {

   PackageManager pm = context.getPackageManager();// 得到包管理器

   PackageInfo pi = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES);// 获得该运用的信息内容,即主Activity

   if (pi != null) {

    String versionName = pi.versionName == null ? "null" : pi.versi


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 5条评论
  • 泪灼矫纵2022-05-29 17:36:59
  • ;yyyy-MM-dd-HH-mm-ss");public CrashApplication() {}public static CrashApplication getInstance() {  i
  • 颜于烟柳2022-05-29 21:27:13
  • plication类,比如  全句洗稿        android:name=".CrashApplication"        androi
  • 柔侣澄萌2022-05-29 23:00:02
  • NCE = new CrashApplication();  }  return INSTANCE;}@Overridepublic void onC
  • 掩吻怎忘2022-05-29 20:11:01
  • UncaughtExceptionHandler插口。应用的那时候有一下下好多个常见问题1. 必须在manifest文档中的application连接点,加上你自个建立的Application类,比
  • 莣萳羞稚2022-05-30 02:04:06
  • 口,并覆写 public void uncaughtException(Thread thread, Throwable ex) 方式只能。因为Applicati

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理