Android: Wie Vordergrund Aktivität von aktiver Tätigkeit schließen?
-
18-09-2019 - |
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.
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:
- Bewegen Sie die Authentifizierungslogik in die
DlgServerRequest
Klasse, so kann es sichfinish()
. - Legen Sie Ihre Instanz Ihrer
DlgServerRequest
Klasse in ein statisches Datenelement so Ihre Haupttätigkeitfinish()
auf so nennen kann
Wenn Sie die Option # 2 wählen, es ist wirklich wichtig, um null
, dass statische Daten Mitglied Speicherlecks zu vermeiden.