0

而不是强制关闭对话框,我想向用户显示一个带有支持信息的活动,同时向 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);
        }
    }
}
4

0 回答 0