Допустим, у нас есть ProgressDialog
и AlertDialog
в LoginActivity
как:
private ProgressDialog progressDialog;
private AlertDialog errorDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
errorDialog = new AlertDialog.Builder(this)
.setTitle("Error")
.setCancelable(false)
.setPositiveButton("Close", (dialog, which) -> {
dialog.dismiss();
})
.create();
}
Когда нам нужно показать прогресс, как при входящем вызове API входа, мы показываем progressDialog
as:
showProgress(bool inProgress, String message) {
if (inProgress) {
progressDialog.setMessage(message);
progressDialog.show();
} else {
progressDialog.dismiss();
}
}
Когда нам нужно показать ошибку, мы можем сделать это, используя следующую функцию:
showError(String error) {
errorDialog.setMessage(error)
errorDialog.show();
}
Теперь мой вопрос:
Если
- Вызов API запущен и
showProgress(true, "Please wait..")
выполнен. LoginActivity
уничтожен до showProgress(false, "")
.
Тогда естьутечка памяти?Если да, то
- мне нужно закрыть диалог в
onPause
и воссоздать его в onResume
(поддерживая последнее состояние диалога)?или - просто закройте диалоговое окно в методе
onDestroy
и установите для progressDialog
значение null. - и необходима ли установка
progressDialog
?
Если
- Произошла ошибка и
errorDialog
отображается для пользователя. LoginActivity
уничтожено перед закрытием диалогового окна.
Тот же вопрос, что и в 1.
Пожалуйста, предложите лучший подход для использования диалогов (AlertDialog
, ProgressDialog
..) или пользовательских DialogFragment
.