Dialog.show () по сравнению с Activity.showDialog ()

Насколько я могу сказать, существует два способа показать Диалоговое окно от Действия.

  1. Создайте Диалоговое окно (например, с помощью AlertDialog.Builder), и затем назовите недавно созданное Диалоговое окно show() метод.
  2. Назовите действие showDialog() метод, передающий в интервале, который исключительно определяет, какое Диалоговое окно Вы хотите создать. Затем переопределение onCreateDialog() на самом деле создавать Диалоговое окно и Android отобразит его для Вас.

Второй метод, кажется, общепринятая практика, но мне любопытно, если существует какая-либо причина, это имеет значение, какой я использую. Вот все, что я могу придумать:

Причины использовать Dialog.show

  1. Если необходимо параметризовать Диалоговое окно в некотором роде, это может быть немного неудобно использовать Activity.showDialog, как описано в этом вопросе. Вам, вероятно, придется сохранить Строку или что-то в членской переменной, именно так что это может быть несколько полученных моменты спустя во время onCreateDialog или onPrepareDialog.
  2. Логика для создания и изменения диалогового окна распространена через многие места, потенциально делая код тяжелее, чтобы считать и поддержать:
    • Место, где Вы звоните showDialog()
    • В потенциально большом switch оператор в переопределенном onCreateDialog метод
    • В потенциально большом switch оператор в переопределенном onPrepareDialog метод

Причины использовать Activity.showDialog:

  1. Документы API для Activity.showDialog скажите, что Диалоговым окном "управляет" Действие, которое я предполагаю, предоставляет некоторое преимущество? Но это также верно, если Вы используете AlertDialog.Builder, Я думал бы, потому что Вы передаете в this как аргумент конструктору Разработчика.
  2. Если Ваше Действие собирается показать то же (или очень похожее) Диалоговое окно несколько раз, эта опция создает его только однажды, вместо того, чтобы создать новое каждый раз, таким образом помещая меньше деформации на систему до выделения места для новых объектов, сборки "мусора", и т.д.

Таким образом, мой вопрос, каковы критерии решения, когда использовать Activity.showDialog и когда использовать Dialog.show, и почему?

37
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

На мой взгляд, вам следует предпочесть showDialog , потому что этот метод сделает большую часть работы для ты. Например, вам не нужно беспокоиться о том, что вы потеряете ссылку на свой диалог после изменения ориентации экрана. Он будет воссоздан автоматически. Dialog.show гораздо более подвержен ошибкам.

Поэтому я предлагаю вам использовать showDialog везде, где это возможно.

18
ответ дан 27 November 2019 в 05:03
поделиться

Я думаю, что решение зависит от вас, в зависимости от вы указали веские причины. Если у меня есть действие, в котором есть только одно диалоговое окно (скажем, для отображения предупреждения), я бы просто запустил метод Dialog.show ... с другой стороны, если пользовательский интерфейс моего приложения тоже полагается большая часть его функциональных возможностей связана с использованием диалогов, было бы гораздо лучше использовать showDialog () . Я думаю, что лучшим преимуществом использования showDialog () является то, что его легче читать:

final int ERROR_DIALOG = 404;
final int MSG_DIALOG = 200;

.....

// if someone else read this, he/she will immediately understand what's going on
showDialog( ERROR_DIALOG );
2
ответ дан 27 November 2019 в 05:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: