Android:对话:我应该隐藏还是解雇

时间:2011-04-01 19:07:47

标签: android dialog

我正在使用Dialog在我的应用中创建一些快速视图(例如登录输入名称等)

我正在徘徊更好的东西:隐藏或解散。

我知道他们两个都做了但我一直在徘徊,如果最好只是隐藏一个Dialog并在我需要时再次显示它,或者将它解散并重新创建它。

我的Dialogs很小,在我的代码中非常静态,所以我没有大量的实例。

所以有人可以给我使用hide而不是dismiss的优点和缺点。

杰森

4 个答案:

答案 0 :(得分:52)

使用hide()可能会导致Leaked Window错误。

如果您选择使用hide()并使用finish()退出应用程序,则会导致有关窗口泄露的错误消息(见here)。

因此,在调用dismiss()之前正确finish()您的对话框,或者只使用dismiss()代替hide()

答案 1 :(得分:25)

这取决于您需要多长时间,以及创建它的时间是否昂贵。如果创建它不是太昂贵,我个人更愿意解雇它,以获得“更清洁的环境”。但如果你没有使用数百个对话框,我认为这不重要。

答案 2 :(得分:8)

我知道这是一篇非常古老的帖子,但我发现上述答案都不够好,所以用最简单的方式解释:

  • hide()只会更改对话框的可见性状态,但该对象仍然存在,可以使用show()方法再次显示。
  • dismiss()隐藏并摧毁对话框。要再次显示对话框,首先需要重新创建它。

然后,如果你需要多次显示和隐藏对话框hide()它。最终在dismiss()onDestroy()以避免窗口泄漏错误。

希望它对于功能引用很有用。

答案 3 :(得分:1)

我假设“静态”是指内容不是动态的,而不是代码中有静态对象。在这种情况下,最好关闭对话框并允许VM重新收集为其分配的任何内存。创建对话框所需的资源是微不足道的,但是当它不经常使用时保留在内存上是一种使内存系统匮乏的好方法。

考虑您的应用可能是正在运行的六个应用之一。如果他们都隐藏了他们的“廉价”物品而不是解雇他们很快就会被VM关闭以收回记忆。

与此同时,我们谈论的是一个不完全是大对象的Dialog。我提供的标准行为是解除它,除非你可以创建一个令人信服的论据,为什么隐藏它以便在重新创建时节省资源更便宜(例如,如果你经常显示这个对话框)。