Управление памятью с диалогами в Android - PullRequest
0 голосов
/ 26 ноября 2018

Допустим, у нас есть 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();
}

Теперь мой вопрос:

  1. Если

    • Вызов API запущен и showProgress(true, "Please wait..") выполнен.
    • LoginActivity уничтожен до showProgress(false, "").

    Тогда естьутечка памяти?Если да, то

    • мне нужно закрыть диалог в onPause и воссоздать его в onResume (поддерживая последнее состояние диалога)?или
    • просто закройте диалоговое окно в методе onDestroy и установите для progressDialog значение null.
    • и необходима ли установка progressDialog?
  2. Если

    • Произошла ошибка и errorDialog отображается для пользователя.
    • LoginActivity уничтожено перед закрытием диалогового окна.

Тот же вопрос, что и в 1.

Пожалуйста, предложите лучший подход для использования диалогов (AlertDialog, ProgressDialog ..) или пользовательских DialogFragment.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...