Dialog.show()与Activity.showDialog()

Mat*_*rog 37 android dialog

据我所知,有两种方法可以显示Activity中的Dialog.

  1. 创建对话框(例如,使用AlertDialog.Builder),然后调用新创建的Dialog show()方法.
  2. 调用Activity的showDialog()方法,传入一个int,它唯一地定义了你想要构建的Dialog类型.然后覆盖onCreateDialog()以实际构建Dialog,Android将为您显示它.

第二种方法似乎是标准做法,但我很好奇是否有任何理由使我使用哪种方法.以下是我能想到的所有内容:

使用的理由 Dialog.show

  1. 如果你需要以某种方式参数化对话框,使用它可能有点尴尬Activity.showDialog,如本问题所述.您可能必须在成员变量中存储String或其他内容,以便稍后可以在onCreateDialog或之后检索它onPrepareDialog.
  2. 创建和修改对话框的逻辑分布在许多地方,可能使代码更难以阅读和维护:
    • 你打电话的地方 showDialog()
    • switch重写onCreateDialog方法中的潜在大型语句内
    • switch重写onPrepareDialog方法中的潜在大型语句内

使用理由Activity.showDialog:

  1. API文档Activity.showDialog说,对话是由活动"管理",我想这提供了一些好处?但是,如果您使用AlertDialog.Builder,我认为这也是如此,因为您this作为参数传递给Builder的构造函数.
  2. 如果您的Activity将多次显示相同(或非常相似)的Dialog,则此选项仅创建一次,而不是每次创建一个新的,因此在为新对象分配空间方面给系统带来的压力更小,垃圾收集等

所以我的问题是,决定何时使用Activity.showDialog以及何时使用的标准是什么Dialog.show?为什么?

Dar*_*ski 18

在我看来,你应该更喜欢,showDialog因为这种方法将为你完成大部分工作.在示例中您不必担心在更改屏幕方向后您将丢失对对话框的引用.它将自动重建.Dialog.show更容易出错.

所以我建议你尽可能地使用showDialog它.