2011-04-01 63 views
7

正如标题所示,我的自定义应用程序类中设置了UncaughtExceptionHandler,该应用程序类在我的应用程序启动时被设置为默认值。实例化AlertDialog的Android UncaughtExceptionHandler休息

但是,虽然没有在文档中,我已经读过,您不能使用MyApplication.thisgetApplicationContext()实例化Dialog。当我尝试这样做,我得到一个

窗口管理器,$ BadTokenException ...

我需要一个替代方案。我曾想过要做一个新的活动来弥补这一点,但宁可让它成为AlertDialog

有没有一种方法可以从MyApplication类中获得我的UncaughtExceptionHandler的有效上下文?

回答

8

我已阅读,你可以不使用MyApplication.this或getApplicationContext

正确实例化一个对话框。应用程序上下文对于构建用户界面不是特别有用。

我曾想过要做一个新的活动来弥补这一点,但宁愿让它成为AlertDialog。

在这种情况下AlertDialog是不可能的。对于初学者来说,只有一个活动可以打开一个对话框,并且你的任何活动都不会运行(例如,在后台服务中崩溃)并且是有效的(例如,你有一个活动,但它是崩溃的活动)。

编辑:固定前一段清理混乱

+0

你能提出替代?如果发生异常,我希望测试此产品的客户能够报告反馈。我在寻找的是一个全局未捕获的异常挂钩,它会询问他们是否想向我们发送报告。 – 2011-04-01 22:16:04

+4

@Tom Fobear:对不起,刚才意识到我的回答有点过于宽泛。你可以开始一个活动就好了;你不能弹出你自己的对话框。使用对话为主题的活动,你应该没问题。但请记住,您的后台线程应该有自己的无声未捕获异常处理程序,因为您不希望在不知所措的情况下弹出活动。 – CommonsWare 2011-04-01 22:42:34

+0

多数民众赞成,这就是我需要的所有信息。谢谢。 – 2011-04-01 22:49:51