Frage

Ich habe eine Anwendung, die asynchron mit dem Server kommuniziert. Wenn die Anwendung einen Anforderungsserver macht eine neue Dialog (Aktivität) mit „Laden“ Benachrichtigung erstellt. Die Haupttätigkeit implementiert Methoden für Serverantworten Handhabung und ich möchte den Vordergrund Aktivität schließen, wenn die Haupttätigkeit die Antwort vom Server empfängt.

Benachrichtigungsdialog wird die folgende Art und Weise erstellt:

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

}

so, wenn der Benutzer versucht, die folgende Methode zur Authentifizierung heißt:

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

und onAuthenticateResponse führt die Authentifizierung Antwort:

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

Ich würde es begrüßen, wenn jemand einen Weg vorschlagen, könnte den Benachrichtigungsdialog (DlgServerRequest), wenn die onAuthenticateUser () ausgeführt, um zu schließen.

War es hilfreich?

Lösung

Warum nicht eine echte ProgressDialog oder eine andere Dialog verwenden? Dann alles, was Sie tun müssen, ist dismissDialog(), und du bist fertig?

Wenn das nicht akzeptabel ist, haben Sie zwei Haupthandlungs, die ich sehen kann:

  1. Bewegen Sie die Authentifizierungslogik in die DlgServerRequest Klasse, so kann es sich finish().
  2. Legen Sie Ihre Instanz Ihrer DlgServerRequest Klasse in ein statisches Datenelement so Ihre Haupttätigkeit finish() auf so nennen kann

Wenn Sie die Option # 2 wählen, es ist wirklich wichtig, um null, dass statische Daten Mitglied Speicherlecks zu vermeiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top