app/src/main/java/net/nashlegend/sourcewall/util/CrashReporter.java

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package net.nashlegend.sourcewall.util;

import android.content.Context;
import android.util.Log;

import net.nashlegend.sourcewall.BuildConfig;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.Thread.UncaughtExceptionHandler;
import java.nio.charset.Charset;

/**
 * 将下面两行添加到APP的Application文件的onCreate()方法里。
 * CrashReporter crashReporter=new CrashReporter(getApplicationContext());
 * Thread.setDefaultUncaughtExceptionHandler(crashReporter);
 * 如果需要Application处理崩溃问题,比如关闭应用程序,则需要调用如下:
 * crashReporter.setOnCrashListener(xxx);
 * 如果在CrashListener.onCrash()里面想调用系统默认的Force Close对话框,可做如下操作:
 * 在执行Thread.setDefaultUncaughtExceptionHandler (crashReporter)之前先定义一个系统默认的
 * UncaughtExceptionHandler mUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
 * 然后在CrashListener.onCrash()里面添加mUncaughtExceptionHandler
 * .uncaughtException(thread, ex);
 *
 * @author NashLegend
 */
@SuppressWarnings("ResultOfMethodCallIgnored")
public class CrashReporter implements UncaughtExceptionHandler {
    private Context mContext;
    private CrashListener onCrashListener;

    public CrashReporter(Context context) {
        mContext = context;
    }

    /*
     * 发生未能捕获错误的时候调用。
     */
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        String infoString = "";
        long threadId = thread.getId();
        infoString += ("ThreadInfo : Thread.getName()=" + thread.getName()
                + " id=" + threadId + " state=" + thread.getState() + "\n");
        try {
            final Writer result = new StringWriter();
            final PrintWriter printWriter = new PrintWriter(result);
            ex.printStackTrace(printWriter);
            String stacktrace = result.toString();
            infoString += stacktrace;

            infoString += "\n";
            infoString += "Cause : \n";
            infoString += "======= \n";
后面还有 135 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。