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

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

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

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

我的对话框很小,在我的代码中是非常静态的,因此我没有大量的实例。

那么有人可以给我使用隐藏而不是解雇的利弊。

贾森

  • AlertDialog中的NumberPicker始终激活键盘。 如何禁用此function?
  • DisogFragment被取消时的回调
  • 如何在屏幕上显示警告框时禁用后退按钮
  • Android:如何创建透明的对话框主题活动
  • 是否有可能在单击edittext时显示对话框消息?
  • 如何通过编程方式关闭Android中的Dialog?
  • 如何删除对话框边距?
  • Android自定义列表对话框
  • 这取决于您需要多少时间,以及创建它的时间是否昂贵。 如果创建它不是太昂贵,我个人更愿意解雇它,以获得“更清洁的环境”。 但如果你没有使用数百个对话框,我认为这不重要。

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

    如果您选择使用hide()并使用finish()退出应用程序,这将导致有关窗口泄露的错误消息( 此处显示 )。

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

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

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

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

    希望它对特征引用有用。

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

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

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