而不是强制关闭对话框,我想向用户显示一个带有支持信息的活动,同时向 bugsnag 发送错误信息。我遵循了这个建议(https://trivedihardik.wordpress.com/2011/08/20/how-to-avoid-force-close-error-in-android/)为未捕获的异常设置处理程序。使用 bugsnag.notify 向 bugsnag 报告显然需要一些时间,所以我认为我需要一个 AsyncTask 来显示“支持活动”并发送通知。只有在完成此操作后,该进程才会被终止。AFAIK,AsyncTask 的问题是在放入帮助类时无法更新 UI 线程。那么我怎样才能确保将错误报告给busgnag,显示支持活动并随后终止该进程?
MainActivity.java 中的代码
Bugsnag.init(this);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
异常处理程序.java
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.util.Log;
import com.bugsnag.android.Bugsnag;
public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
private final Activity myContext;
public ExceptionHandler(Activity context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
new ReportCrashTask().execute();
}
private class ReportCrashTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Intent intent = new Intent(myContext, CrashActivity.class);
myContext.startActivity(intent);
Bugsnag.notify(new RuntimeException("Test error"));
return "done";
}
@Override
protected void onPostExecute(String aVoid) {
super.onPostExecute(aVoid);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
}
}
}