Dialog напрямую не рекомендуется, потому что управление состоянием диалога при configuration changes сложно и неочевидно (не делайте так, если вы не в 2009м). Диалоги были частой причиной крэшей на ранних этапах разработки под андроид. Метод активити showDialog() deprecated начиная с API level 15.DialogFragment – фрагмент, который содержит внутри себя объект
Dialog и выступает как интерфейс для взаимодействия с диалогом. У DialogFragment жизненный цикл фрагмента. Система сама заботится о пересоздании DialogFragment при configuration changes.Всегда используйте
DialogFragment, а не Dialog.