我为什么要在Android中手动关闭AlertDialog?

时间:2013-03-28 13:41:20

标签: android memory-leaks alertdialog

为什么在销毁Activity之前我应该​​为AlertDialog调用dismiss()方法?有什么东西泄漏,但到底是什么?那么为什么PopupWindow可以处理Activity破坏?

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

Window w = PolicyManager.makeNewWindow(mContext);

这是什么意思?为什么它不能只使用从活动中获得的PhoneWindow?

ADDED

Say,AlertDialog引用Context,Context引用什么,然后GC应该垃圾收集两个对象(因为它们没有从'outside'引用)。还有什么提到AlertDialog?换句话说,内存泄漏究竟在哪里?

1 个答案:

答案 0 :(得分:0)

  

使用id将Alertdialogs附加到我们的活动中,此Link显示alertdialog的活动,一旦显示alertdialog,它就是一个单独的窗口(你设置取消假,然后你被迫管理它),如果它正在运行并且您的活动被破坏每个与之关联的内存都将被释放,包括AlertDialog的id。那就是错误弹出。我认为现在很清楚。