我在使用Dialog为我的应用创建一些快速视图(例如登录输入名称等),
我想知道哪种方式更好:隐藏还是关闭。
我知道它们的区别,但我一直在思考是否更好地只隐藏一个Dialog,需要时再显示它,还是关闭并重新创建它。
我的Dialog非常小,实际上在代码中是静态的,因此我没有大量的实例。
因此,有人能给我说明使用隐藏或关闭的优缺点吗?
我在使用Dialog为我的应用创建一些快速视图(例如登录输入名称等),
我想知道哪种方式更好:隐藏还是关闭。
我知道它们的区别,但我一直在思考是否更好地只隐藏一个Dialog,需要时再显示它,还是关闭并重新创建它。
我的Dialog非常小,实际上在代码中是静态的,因此我没有大量的实例。
因此,有人能给我说明使用隐藏或关闭的优缺点吗?
hide()
可能会导致Leaked Window
错误。如果您选择使用hide()
,并在使用finish()
退出应用程序时,这将导致一个关于窗口泄露的错误消息(可在此处查看)。
因此,在调用finish()
之前,请正确地使用dismiss()
关闭您的对话框,或者只需使用dismiss()
而不是hide()
。
hide()
有什么用处? - Pratik Butanihide()
而不是 dismiss()
可以提高性能。 - Joshua Pinter这取决于你需要多长时间以及创建它是否昂贵。如果创建它不太昂贵,我个人更喜欢放弃它,以获得一个“更清洁的环境”。但是,如果你没有使用数百个对话框,我认为这并不是非常重要。
我知道这是一个非常古老的帖子,但我发现以上所有答案都不够好,所以最简单的解释方式如下:
hide()
只会更改对话框的可见性状态,但对象仍然存在,可以使用 show()
方法再次显示。dismiss()
隐藏并销毁对话框。要再次显示对话框,需要先重新创建对话框。如果需要经常显示和隐藏对话框,则最好使用 hide()
。最终在 onDestroy()
上调用 dismiss()
以避免窗口泄漏错误。请注意,离开未解除的对话框所在的活动会导致内存泄漏。
希望对未来的参考有所帮助。
我猜你所说的“静态”是指内容不是动态的,而不是你的代码中有静态对象。在这种情况下,最好是关闭对话框并允许虚拟机重新收集为其分配的任何内存。创建对话框所需的资源很少,但在不经常使用时保留内存是耗尽系统内存的好方法。
考虑到您的应用程序可能是运行的半打应用程序之一。如果它们都隐藏了它们的“便宜”对象而不是很快将它们关闭,那么VM将被迫关闭某些应用程序以回收内存。
同时,我们正在谈论一个对话框,它并不是一个特别大的对象。我认为标准行为是关闭它,除非您能够提出令人信服的理由,说明隐藏它以节省重新创建资源的成本更便宜(例如,如果您经常显示此对话框)。