我想知道Crashlytics如何通过整个应用在任何线程上监控未捕获的异常?它使用全局异常处理程序还是什么?
我希望通过向用户显示通用错误UI以及登录到远程服务器来实现类似的行为以优雅地处理未捕获的异常。这甚至可能吗?
这是我尝试的内容:
我实施了UncaughtExceptionHandler
:
public class ActivityExceptionHandler implements Thread.UncaughtExceptionHandler {
private final Context mContext;
public ActivityExceptionHandler(Context context) {
mContext = context;
}
@Override
public void uncaughtException(Thread t, Throwable e) {
// logging code
...
...
// show error UI
Intent intent = new Intent(mContext, GenericErrorActivity.class);
intent.putExtra("error", e.toString());
mContext.startActivity(intent);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
}
并将其注册在我的BaseActivity
onCreate()
:
Thread.setDefaultUncaughtExceptionHandler(new ActivityExceptionHandler(this));
但这只处理主线程上的异常,其他线程呢?