zoukankan      html  css  js  c++  java
  • 自定义application的全局捕获异常实现

    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();
    
  • 相关阅读:
    使用国内镜像源安装kubelet kubeadm kubectl
    查看pod创建时使用yaml文件内容
    东离剑游记第三季下载地址
    Prometheus监控Nginx
    使用yum方式安装的openresty参数
    用prometheus监控Nginx
    MySQL之pt-query-digest分析慢查询日志的详情介绍
    内容渠道的贬值---阮一峰的网络日志
    Prometheus中使用的告警规则
    frpc穿透报错 日志显示 http: proxy error: no such domain 解决办法
  • 原文地址:https://www.cnblogs.com/loaderman/p/6509524.html
Copyright © 2011-2022 走看看