【问题标题】:Android UncaughtExceptionHandler that instantiates an AlertDialog breaks实例化 AlertDialog 的 Android UncaughtExceptionHandler 中断
【发布时间】:2011-04-01 22:03:53
【问题描述】:

正如标题所说,我在我的自定义应用程序类中设置了一个UncaughtExceptionHandler,它在我的应用程序启动时被设置为默认值。

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

WindowManager$BadTokenException...

我需要一个替代方案。我曾想过进行一项新活动来弥补这一点,但宁愿它是AlertDialog

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

【问题讨论】:

    标签: android exception uncaught-exception


    【解决方案1】:

    我了解到您无法使用 MyApplication.this 或 getApplicationContext 实例化 Dialog

    正确。应用程序上下文对于构建 UI 并不是特别有用。

    我曾想过制作一个新活动来弥补这一点,但宁愿它是一个 AlertDialog。

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

    编辑:修正了上一段以消除混乱

    【讨论】:

    • 你能推荐一个替代方案吗?如果发生异常,我希望测试此产品的客户能够报告反馈。我正在寻找的是一个全局未捕获的异常钩子,它会询问他们是否想向我们发送报告。
    • @Tom Fobear:抱歉,刚刚意识到我的回答有点过于宽泛了。你可以启动一个活动就好了;你只是不能弹出你自己的对话框。使用以对话为主题的活动,你应该没问题。但是请记住,您的后台线程应该有自己的静默未捕获异常处理程序,因为您不希望在不知名的地方弹出活动。
    • 太好了,这就是我需要的所有信息。谢谢。
    • @CommonsWare:我在尝试从 Application 中注册的 UncaughtExceptionHandler 启动活动时收到 AndroidRuntimeException
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2014-10-01
    相关资源
    最近更新 更多