Java 显示自定义异常错误弹出窗口
我在类扩展应用程序中创建了一个自定义异常处理程序,使用Java 显示自定义异常错误弹出窗口,java,exception-handling,android,uncaughtexceptionhandler,Java,Exception Handling,Android,Uncaughtexceptionhandler,我在类扩展应用程序中创建了一个自定义异常处理程序,使用Thread.setDefaultUncaughtExceptionHandler,将未捕获异常的堆栈跟踪打印到文件中。我希望它还向用户显示一个自定义错误弹出窗口,而不是默认的“不幸,[应用程序]已停止”消息 以下方法创建一个AlertDialog,单击该对话框时返回主菜单。它甚至可以在后台线程上运行 void alert(final String msg) { final Activity activity = (Activity)
Thread.setDefaultUncaughtExceptionHandler
,将未捕获异常的堆栈跟踪打印到文件中。我希望它还向用户显示一个自定义错误弹出窗口,而不是默认的“不幸,[应用程序]已停止”消息
以下方法创建一个AlertDialog,单击该对话框时返回主菜单。它甚至可以在后台线程上运行
void alert(final String msg) {
final Activity activity = (Activity) getContext();
activity.runOnUiThread(new Runnable() {
public void run() {
new AlertDialog.Builder(activity)
.setCancelable(false)
.setMessage(msg)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
activity.startActivity(new Intent(activity, MainMenu.class));
}
})
.show();
}
});
}
但是,AlertDialog要求知道当前活动。要在异常处理程序中使用此方法,我可以在应用程序类中保留一个指向当前活动的指针,该指针在每个活动的onResume()
方法中重置,但我担心内存泄漏
当引发未捕获异常时,最好用什么方法打开AlertDialog?要获取默认错误弹出窗口,请处理异常,然后执行默认未捕获异常处理程序:
final Thread.UncaughtExceptionHandler defaultHandler =
Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
doCustomHandlingHere();
defaultHandler.uncaughtException(t,e);
}
});
要获得自定义错误弹出窗口,我相信您必须分别为每个活动设置默认的未捕获异常处理程序。有关详细信息,请参阅。如果您正在考虑替换默认ANR屏幕-否。我认为这与@chancea相关,谢谢链接,但这些解决方案似乎需要后台服务作为上下文,而不是活动。@Shark这不是应用程序无响应屏幕,出现异常时会出现屏幕。链接未打开?如何添加自定义对话框?