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