【问题标题】:Why should I dismiss AlertDialog manually in Android?为什么我应该在 Android 中手动关闭 AlertDialog?
【发布时间】:2013-03-28 13:41:19
【问题描述】:

为什么要在 Activity 被销毁之前为 AlertDialog 调用dismiss() 方法?有些东西泄漏了,但究竟是什么?那么为什么 PopupWindow 可以处理 Activity 销毁呢?

我在 Android 资源中发现每个警报对话框都会创建窗口:

Window w = PolicyManager.makeNewWindow(mContext);

这是什么意思?为什么不能只使用从activity获取的PhoneWindow?

添加

说,AlertDialog 引用 Context,Context 没有引用任何内容,那么 GC 应该对这两个对象进行垃圾收集(因为它们不是从“外部”引用的)。还有什么对 AlertDialog 的引用?换句话说,内存泄漏到底在哪里?

【问题讨论】:

    标签: android memory-leaks android-alertdialog


    【解决方案1】:

    Alertdialogs 使用 id 附加到我们的活动,这个Link 显示了 alertdialog 的活动,一旦显示 alertdialog,它就是一个单独的窗口(如果它正在运行,你设置取消 false 然后你强制管理它)在后面,你的活动被破坏了与它相关的每个内存都将被释放,包括 AlertDialog 的 id。那就是弹出错误。我想现在很清楚了。

    【讨论】:

    • AlertDialog 是否显示在单独的 Activity 中? (我对此表示怀疑,但需要检查...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多