关于如何获取上线后的app异常信息(bug)处理

  • 首先是在Application中实现接口
public class App extends Application {
//记得在清单文件注册App的name
    @Override
    public void onCreate() {
        super.onCreate();
        Thread.setDefaultUncaughtExceptionHandler(new MYExceptionHandler());
    }
    /**
     * 当app出现异常就会走下面的方法!!!
     * */
    class  MYExceptionHandler implements Thread.UncaughtExceptionHandler{

        @Override
        public void uncaughtException(Thread thread, Throwable throwable) {
            if (throwable != null) {
                final Writer result = new StringWriter();
                final PrintWriter printWriter = new PrintWriter(result);
                throwable.printStackTrace(printWriter);
                String errorReport = result.toString();
                Log.d("-<<<<>" , errorReport);

                //这里吧errorReport post到http去就行了!!!
                //...

                 //或者保存文件到sd卡中          
                 saveInFile(errorReport );

                //最后杀死自己             android.os.Process.killProcess(android.os.Process.myPid());

            }
        }
    }
private void saveInFile(String errorReport) {
        FileOutputStream out = null ;

        File  file = new File(Environment.getExternalStorageDirectory() , "error-log.txt");
        if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
            try {
                out = new FileOutputStream(file);
                out.write(errorReport.getBytes());
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if (out != null) try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

  • 我这个项目是如果异常了,就再次启动自己
//在这个方法里启动另一个activity
 public void uncaughtException(Thread thread, Throwable ex) {
        if (ex != null) {
            final Writer result = new StringWriter();
            final PrintWriter printWriter = new PrintWriter(result);
            ex.printStackTrace(printWriter);
            String errorReport = result.toString();
            Log.d("-<<<<>" , errorReport); 

            //上传http

            Intent intent = new Intent("com.dopool.devinstall.TwoActivity");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(CATCH_EXCEPTION, errorReport);
            mContent.startActivity(intent);
            android.os.Process.killProcess(android.os.Process.myPid());
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值