Вы просите о лучшей практике. На самом деле лучше всего не использовать ProgressDialog
, так как они блокируют взаимодействие пользователя с приложением.
Существует много альтернатив, чтобы не использовать ProgressDialog
.
Если ваше приложение загружает данные, которые требуются для списка, разместите Spinner
вместо ListView.
Для некоторого дополнительного чтения в этой теме смотрите здесь: Google Design Guidelines: Progress
Если вы все еще хотите использовать ProgressDialog
я настоятельно рекомендую не использовать класс, который размещен выше. Он содержит ссылку static
на progressDialog
, и поэтому он глобально выше всех видов деятельности и живых циклов. Если ваша заявка воссоздана или что-то еще, это может вызвать некоторые проблемы.
Я бы порекомендовал не static
ProgressDialogHelper
, который вы можете инициализировать за каждые Activity
, а затем он обработает Dialog
. Также убедитесь, что ручка методы LiveCycle как onDestroy
Имея BaseActivity, как @jagmohan отметил возможно, но если вы не хотите иметь свой собственный BaseActivity и хотите использовать что-то, как падение. Вы можете создать что-то вроде этого:
ProgressDialogHelper.java
public class ProgressDialogHelper {
ProgressDialog mProgressDialog;
public ProgressDialogHelper() {
}
public ProgressDialogHelper(Context context, String title, String message) {
mProgressDialog = new ProgressDialog(context);
mProgressDialog.setTitle(title);
mProgressDialog.setMessage(message);
mProgressDialog.show();
}
public ProgressDialog getProgressDialog() {
return mProgressDialog;
}
public void setProgressDialog(ProgressDialog mProgressDialog) {
//make sure the previous dialog is hidden
hide();
this.mProgressDialog = mProgressDialog;
}
public void show() {
if (mProgressDialog != null && !mProgressDialog.isShowing()) {
mProgressDialog.show();
}
}
public void create(Context context, String title, String message) {
if (mProgressDialog != null) {
mProgressDialog.dismiss();
}
mProgressDialog = ProgressDialog.show(context, title, message);
}
public void hide() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
mProgressDialog = null;
}
}
public void onDestroy() {
hide();
}
}
Не могли бы вы привести пример, как использовать свой класс –
@MinaFawzy создать новый экземпляр помощника, а затем просто использовать create, show, hide, onDestroy – mikepenz