Подтвердить что ты не робот

Об Android Progress Dialog. Избегайте?

Я читал о Dialogs на Android-сайте, и я наткнулся на раздел, в котором говорится: "Избегайте ProgressDialog".

Вот ссылка: http://developer.android.com/guide/topics/ui/dialogs.html

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

Означает ли это, что я должен создать свой собственный диалог прогресса с использованием класса ProgressBar? Как бы это сделать, кстати? Любая помощь приветствуется.

4b9b3361

Ответ 1

Edit: С Android O, ProgressDialog теперь официально устарел. Предлагается альтернативный подход

Этот класс устарел на уровне API O. Используйте индикатор прогресса, такой как ProgressBar, встроенный внутри действия, а не используя этот модальный диалог.


Оригинальный ответ:

Это все из перспективы проектирования и взаимодействия с пользователем, а не с точки зрения кода.

В рекомендациях пользовательского интерфейса вам следует избегать использования ProgressDialog не потому, что класс устарел (это не во время написания ответа), а потому, что он заставляет пользователя избегать взаимодействия с приложением и просто взгляните на экран.

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

Если вам абсолютно необходимо, чтобы пользователь прекратил взаимодействие до тех пор, пока индикатор выполнения не закончится, обязательно сделайте это. Документы просто говорят, что вы сможете найти лучшие способы сделать это (отсюда ссылка на Прогресс и активность).

Ответ 2

Когда ProgressDialog устарел в Android O. Вы должны создать ProgressBar и показать его, установив его видимость. Я использую DelayedProgressDialog из https://github.com/Q115/DelayedProgressDialog Он делает то же самое, что и ProgressDialog с дополнительным преимуществом задержки при необходимости.

Использование:

DelayedProgressDialog progressDialog = new DelayedProgressDialog();
progressDialog.show(getSupportFragmentManager(), "tag");