Андроид:Как закрыть активность переднего плана от активной деятельности?

StackOverflow https://stackoverflow.com/questions/1487125

Вопрос

Я создал приложение, которое асинхронно взаимодействует с сервером.Когда приложение отправляет запрос серверу, создается новый диалог (активность) с уведомлением о «загрузке».Основное действие реализует методы обработки ответов сервера, и я хотел бы закрыть действие переднего плана, когда основное действие получит ответ от сервера.

Диалог уведомлений создается следующим образом:

 private void showServerRequestDialog(String actionLabel){
    Intent intent = new Intent(this, DlgServerRequest.class);
    intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
    startActivity(intent);

}

поэтому, когда пользователь пытается аутентифицироваться, вызывается следующий метод:

private void authenticateUser(String IMEI, String username, String password){
    mEncoderConnection.authenticateRequest(IMEI, username, password);
    showServerRequestDialog("Authenticating...");
}

и onAuthenticateResponse обрабатывает ответ аутентификации:

public void onAuthenticateResponse(AuthenticateResponse pkg) {
    //code for response handling
    //TODO: close ServerRequestDialog
    }
}

Я был бы признателен, если бы кто-нибудь мог предложить способ закрыть диалоговое окно уведомления (DlgServerRequest) при выполнении onAuthenticateUser().

Это было полезно?

Решение

Почему бы не использовать настоящий ProgressDialog или какой-то другой Dialog?Тогда все, что вам нужно сделать, это dismissDialog(), и вы сделали?

Если это неприемлемо, я вижу два основных варианта действий:

  1. Переместите логику аутентификации в DlgServerRequest класс, так что может finish() сам.
  2. Поместите свой экземпляр DlgServerRequest класс в статический элемент данных, чтобы ваша основная деятельность могла вызывать finish() в теме

Если вы выберете вариант № 2, очень важно null извлеките этот статический элемент данных, чтобы избежать утечек памяти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top