4

当你调用dismiss()一个对话框时,除了隐藏它之外,它还会从内存中删除它吗?它是否会从内存中删除所有放置在对话框中的对象,例如ImageViews,Buttons等?

有没有办法我可以自己释放这些对象的内存,而不是等待垃圾收集器完成它的工作?

4

4 回答 4

4

不,我相信这dismiss()只是隐藏它。

这是参考

removeDialog(int)将清除状态。

于 2012-07-18T13:33:23.020 回答
1

在 Java 中,内存只能由垃圾收集器释放,您只能使所有对象为空,以便垃圾收集器可以收集内存以释放。

你为什么需要这个?Java 的全部意义在于它为您处理内存管理。你有一些明显的记忆问题吗?

于 2012-07-18T13:33:06.193 回答
1

谷歌 Android 开发者文档说:

public void dismiss () : 自:API 级别 1 关闭此对话框,将其从屏幕上移除。可以从任何线程安全地调用此方法。请注意,当对话框被关闭时,您不应重写此方法进行清理,而应在 onStop() 中实现该方法。

于 2012-07-18T13:33:39.017 回答
1

手动free记忆是

  1. 在Java中不可行。您可以使用 分配内存new,但垃圾收集器会负责释放它

  2. 当你有一个垃圾收集器试图在后面工作时,这是一个坏主意。

dismiss()只是隐藏对话框。调用removeDialog(int)以删除对它的所有引用并等待 GC 启动。

于 2012-07-18T13:35:38.563 回答