Android:对话框:我应该隐藏还是变暗

我正在玩对话在我的应用程序中创build一些快速浏览(如logininput名称等)

而我正在游荡什么更好:隐藏或解雇。

我知道他们俩都做了什么,但是如果只是隐藏一个对话框并且在我需要的时候再次显示它,或者将其解散并重新创build,那么我会一直stream浪。

我的对话框很小,在我的代码中是非常静态的,所以我不会拥有大量的实例。

那么有人可以给我利用隐藏的利弊。

贾森

Solutions Collecting From Web of "Android:对话框:我应该隐藏还是变暗"

这取决于你需要多less时间,以及创build它是否昂贵。 如果制作起来不算太贵的话,我个人更喜欢解雇,build立一个“更清洁的环境”。 但是如果你不使用数百个对话框,我不认为这真的很重要。

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

如果您select使用hide()并使用finish()退出应用程序,则会导致有关窗口泄露的错误消息(请参阅此处 )。

因此,在调用finish()之前,或者使用dismiss()而不是hide() ,可以正确地dismiss()你的对话框。

我知道这是一个很老的post,但是我没有find足够好的答案,所以用最简单的方式解释:

  • hide()只会改变对话框的可见性状态,但是对象将仍然存在,并且可以使用show()方法再次show()
  • dismiss()隐藏并破坏对话框。 要再次显示对话框,需要先重新创build。

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

希望对特性参考有用。

我认为“静态”是指内容不是dynamic的,而不是你的代码中有静态对象。 在这种情况下,最好closures对话框,让虚拟机重新为其分配内存。 创build一个对话所需要的资源是微不足道的,但是如果不太经常使用,则保留内存是一个饿死内存系统的好方法。

考虑一下你的应用程序可能是六个应用程序之一运行。 如果他们都把隐藏的“廉价”物品隐藏起来,而不是很快就解雇他们,那么虚拟机就会迫使他们closures回收存储器。

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