Android. 在对话框上调用dismiss方法

4
当您在对话框上调用 dismiss() 时,除了隐藏它之外,它是否还会从内存中删除?它会将放置在对话框内的所有对象(例如 ImageView Button 等)都从内存中删除吗?
我能否自己释放这些对象的内存,而不是等待垃圾回收器完成工作?

为什么你需要那个!!让系统自己想怎样做就怎样做。 - AAnkit
1
我遇到了内存泄漏的问题...会抛出OutOfMemory异常,我需要尽可能地释放内存。而我不确定这个函数的作用是什么。 - AndreiBogdan
4个回答

4
不,我相信dismiss()只是将其隐藏起来。
参考链接:这里 removeDialog(int)会清除状态。

你的内存泄漏可能是由其他原因引起的。如果你能缩小一下范围,就来这里让我们再次帮助你。 - prolink007
是的,那是我接下来要发布的问题。我马上就会发布。 - AndreiBogdan

1
在Java中,内存只能通过垃圾回收器来释放,你只能将所有对象设置为null,以便垃圾回收器可以收集内存并释放。
为什么需要这个?Java的整个重点就是它会为你处理内存管理。你是否有一些明显的内存问题或其他问题?

是的,我确实遇到过内存溢出异常。 - AndreiBogdan
你能分享一下你认为引起这个问题的代码吗? - Roll no1

1
Google Android开发者文档指出:

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


1

手动释放内存是不可行的,这在Java中无法实现。您可以使用new分配内存,但垃圾回收器会负责释放它。

  1. 当您有一个试图工作的垃圾回收器时,手动释放内存是个坏主意。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接