【发布时间】:2019-03-17 07:54:50
【问题描述】:
我曾经用这个类处理异常错误并将错误作为字符串传递给另一个活动以进行显示,但是这种方式不再起作用了,似乎当杀死进程发生“sag.class”活动不能再启动了
public class ExceptionHandler extends MainActivity implements java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
private SharedPreferences prefs;
private StringBuilder errorReport;
public ExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);
exception.printStackTrace(new PrintWriter(stackTrace));
errorReport = new StringBuilder();
errorReport.append("************ CAUSE OF ERROR ************\n\n");
errorReport.append(stackTrace.toString());
errorReport.append("\n************ DEVICE INFORMATION ***********\n");
errorReport.append(LINE_SEPARATOR);
errorReport.append("Product: ");
errorReport.append(Build.PRODUCT);
errorReport.append(LINE_SEPARATOR);
errorReport.append("\n************ FIRMWARE ************\n");
errorReport.append("SDK: ");
errorReport.append(Build.VERSION.SDK);
errorReport.append(LINE_SEPARATOR);
errorReport.append("Release: ");
errorReport.append(Build.VERSION.RELEASE);
errorReport.append(LINE_SEPARATOR);
errorReport.append("Incremental: ");
errorReport.append(Build.VERSION.INCREMENTAL);
errorReport.append(LINE_SEPARATOR);
errorReport.append("App Version: ");
try {
errorReport.append(myContext.getApplicationContext().getPackageManager().getPackageInfo(myContext.getPackageName(), 0).versionName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
errorReport.append(LINE_SEPARATOR);
prefs = myContext.getSharedPreferences("MyPrefsFile", MODE_PRIVATE);
if (prefs.contains("access_token"))
{
errorReport.append(prefs.getString("fname","")+" "+prefs.getString("lname",""));
}
Intent intent = new Intent(myContext, sag.class);
intent.putExtra("error", errorReport.toString());
myContext.startActivity(intent);
Process.killProcess(Process.myPid());
System.exit(10);
}
}
那么如何以新的方式在 UncaughtExceptionHandler 类中启动活动呢?
【问题讨论】: