2012-04-23 82 views
0

当我使用dismiss删除一个弹出窗口时,它是只隐藏它还是从内存中删除它?PopupWindow关闭

我试过dismiss,然后showAtLocation几次(使用相同的PopupWindw对象,不重新创建它),窗口显示和隐藏没有问题。问题是我可以指望它 - 也许它被标记为GC删除,但还没有被垃圾收集?

谢谢。

回答

1

dismiss()showAtLocation()相反,对象在dismiss()后保持有效状态。因此它是安全的切换dismiss()/showAtLocation()

它可以从Android的源代码在这里可以看到 - 你可以看看dismiss()showAtLocation()实现

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/PopupWindow.java#PopupWindow.showAtLocation%28android.view.View%2Cint%2Cint%2Cint%29

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/PopupWindow.java#PopupWindow.dismiss%28%29

0

你可以使用

System.gc()

+0

感谢。但是,收集这些信息并不重要,只有在收集信息时才是如此。如果是,那么我需要在每次需要显示它时创建一个新的弹出窗口。 – 2012-04-23 08:24:44

+0

当然这是收集。只是认为智能手机没有大的记忆,所以分配的物品越少,您的应用就越顺畅。 – Manitoba 2012-04-23 08:29:09

+0

GC在班级执行结束时发生。如果GC标语不再使用,它​​将被自动收集。 – Manitoba 2012-04-23 08:48:16

1

的对象将不只要你对它的引用标记为删除强制使用垃圾收集器。所以你可以稍后重新展示。