android - 我什么时候应该关闭对话框?

标签 android memory-leaks android-dialog

我已经阅读了一些有关 Android 中对话框的资料,但我有一个悬而未决的问题:

当我使用 Activity 的处理对话框的方法时(例如:onCreateDialog(...)),我应该还是不应该关闭 onPause 中的对话框()? 或者也许只有在我保留它的情况下我才应该忽略它 - 创建一个引用此对话框的 Activity 成员变量?

我找到了这个答案:https://stackoverflow.com/a/2851833/501560说我需要显式调用 dismiss() 方法,但我读过一些其他资源说 Activity 应该自己处理它...

谢谢。

最佳答案

关闭对话框

当您准备好关闭对话框时,您可以通过调用 Dialog 对象的 dismiss() 来关闭它。如有必要,您还可以从 Activity 中调用 dismissDialog(int),这会有效地为您调用 Dialog 上的 dismiss()。

如果您使用 onCreateDialog(int) 来管理对话框的状态(如前一节所述),那么每次您的对话框关闭时,Dialog 对象的状态都会保留通过 Activity 。如果您决定不再需要此对象或清除状态很重要,那么您应该调用 removeDialog(int)。这将删除对该对象的任何内部引用,如果对话框正在显示,它将关闭它。

使用关闭听众

如果您希望您的应用程序在对话框被关闭时执行某些过程,那么您应该将关闭时的监听器附加到您的对话框。

首先定义DialogInterface.OnDismissListener 接口(interface)。这个接口(interface)只有一个方法,onDismiss(DialogInterface),当对话框被关闭时会被调用。然后只需将您的 OnDismissListener 实现传递给

setOnDismissListener().

但是请注意,对话框也可以“取消”。这是一种特殊情况,表示对话框已被用户明确取消。如果用户按下“后退”按钮关闭对话框,或者如果对话框显式调用 cancel()(可能来自对话)。当对话框被取消时,OnDismissListener 仍然会收到通知,但是如果你想被告知对话框被明确取消(而不是正常关闭),那么你应该注册一个

DialogInterface.OnCancelListener with setOnCancelListener().

关于android - 我什么时候应该关闭对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725741/

相关文章:

Android:长时间运行操作之间的对话

android - 无法在 Android 上显示 AlertDialog,因为我收到 NullPointerException

android - 滚动到列表末尾

Android PayPal 错误 - 请确保已输入所有字段

android - 如何阻止seekBar的移动超过动态点

memory-leaks - 如何诊断 Java 8 元空间泄漏?

android - 如何在按钮顶部创建对话框

android - 如何在 flutter 中创建 SharedPreferences 的单例类

ios - 快速内存泄漏

c++ - 遍历映射并删除动态分配的元素