我想为我的Android应用程序中的所有线程设置一个全局未捕获的异常处理程序.所以,在我的Application子类中,我Thread.UncaughtExceptionHandler为未捕获的异常设置了默认处理程序的实现.
Thread.setDefaultUncaughtExceptionHandler(
new DefaultExceptionHandler(this));
Run Code Online (Sandbox Code Playgroud)
在我的实现中,我试图显示一个AlertDialog显示适当的异常消息.
但是,这似乎不起作用.无论何时,对于任何未处理的线程抛出异常,我都会获得库存操作系统默认对话框("抱歉!-Application-have-stopped-unexpectedly dialog").
为未捕获的异常设置默认处理程序的正确和理想方法是什么?
正如标题所说,我的UncaughtExceptionHandler自定义应用程序类中有一个集合,在我的应用程序启动时被设置为默认值.
但是,虽然没有在文档中我读过你无法实例化Dialog使用MyApplication.this或getApplicationContext().当我尝试这样做时,我会得到一个
窗口管理器,$ BadTokenException ...
我需要另一种选择.我曾想过要做一个新的活动来弥补这一点,但宁愿让它成为一个AlertDialog.
有没有办法可以UncaughtExceptionHandler从MyApplication课堂内获得有效的上下文?