在写模块的时候可能某一个模块会出现一点就奔溃的bug,但是在测试的时候又没有测试到这个bug,如果直接丢给用户使用,那么用户就会直接看到错误的打印,所以要对它进行一个整体的处理,这里就要借助一个类 这个类叫做Application,你的所有activity 服务...都包含在application里,一旦你的代码出现异常,application是可以捕获到的,清单文件中的application指向的类就是 Application 那么我们要做的就是继承改类 我们要做的就是不要让它用默认的application了而是用我们继承的application
Application:
编写一个类继承至Application,然后用于捕获全局的异常的实例
<pre>
package com.itheima.mobilesafe74.global;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.lang.Thread.UncaughtExceptionHandler;
import android.app.Application;
import android.os.Environment;
import android.util.Log;
public class MyApplication extends Application {
protected static final String tag = "MyApplication";
@Override
public void onCreate() {
super.onCreate();
//捕获全局(应用任意模块)异常
//设置默认的没有捕获的异常处理起来
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
//在获取到了未捕获的异常后,处理的方法
ex.printStackTrace();
Log.i(tag, "捕获到了一个程序的异常");
//将捕获的异常存储到sd卡中
String path = Environment.getExternalStorageDirectory().getAbsoluteFile()+File.separator+"error74.log";
File file = new File(path);
try {
PrintWriter printWriter = new PrintWriter(file);
ex.printStackTrace(printWriter);
printWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//上传公司的服务器
//....
//结束应用 闪退的代码
System.exit(0);
}
});
}
}
</pre>
现在要拿我们自定义的这个application 作为应用要使用的application
要怎么搞?
现在我们使用的是系统的Application 我们不要系统的Application 而是用我们自己定义的application 那么应该怎么做呢?
未捕获到异常应用会弹出错误的对话框
将捕获到的异常存储到sd卡中