package com.loaderman.global; import android.app.Application;
import android.os.Environment; import com.squareup.leakcanary.LeakCanary; import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter; /**
* 自定义application
* 使用前需要进行配置
* <application android:name=.MyApplication"
* >
* <p>
* 特性: 整个app的入口; 整个app只有一个application实例
* <p>
* 1. 全局初始化操作
* 2. 定义全局的方法, 声明全局变量
*/ public class MyApplication extends Application { //应用被创建
@Override
public void onCreate() {
super.onCreate(); System.out.println("应用被创建"); //捕获全局异常
//设置未捕获异常的处理器
Thread.setDefaultUncaughtExceptionHandler(new MyHandler()); } //定义全局的方法
public void doSomething() {
System.out.println("doSomething");
} class MyHandler implements Thread.UncaughtExceptionHandler { //如果系统出现未捕获异常, 就会走到此方法中, 然后进行全局处理
@Override
public void uncaughtException(Thread thread, Throwable ex) {
//Throwable: exception和error的父类
ex.printStackTrace();
System.out.println("发现一个未处理的异常, 但是被哥捕获了..."); //将错误日志输出到本地文件中--->自动上传到服务器
//第三方平台: 友盟统计
try {
PrintWriter writer = new PrintWriter(new FileOutputStream(Environment
.getExternalStorageDirectory().getAbsolutePath() + "/err11.log"));
ex.printStackTrace(writer);
writer.flush();
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// ex.printStackTrace();
//及时退出app
//System.exit(0);//java中结束当前进程方法
//闪退
android.os.Process.killProcess(android.os.Process.myPid());//android中杀死当前进程的方法
}
}
}
在其他地方调用全局方法:
//调用自定义application的方法
MyApplication app = (MyApplication) getApplication();
app.doSomething();