Android: Come chiudere l'attività in primo piano da attività attivo?
-
18-09-2019 - |
Domanda
Ho creato un'applicazione che è in modo asincrono in comunicazione con il server. Quando l'applicazione effettua una richiesta del server di una nuova finestra di dialogo (attività) è stato creato con la notifica "caricamento". L'attività principale implementa metodi per la gestione di risposte del server e vorrei chiudere l'attività in primo piano quando l'attività principale riceve la risposta dal server.
finestra di notifica viene creata la seguente modo:
private void showServerRequestDialog(String actionLabel){
Intent intent = new Intent(this, DlgServerRequest.class);
intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
startActivity(intent);
}
in modo che quando l'utente tenta di autenticare il seguente metodo viene chiamato:
private void authenticateUser(String IMEI, String username, String password){
mEncoderConnection.authenticateRequest(IMEI, username, password);
showServerRequestDialog("Authenticating...");
}
e onAuthenticateResponse gestisce risposta di autenticazione:
public void onAuthenticateResponse(AuthenticateResponse pkg) {
//code for response handling
//TODO: close ServerRequestDialog
}
}
Le sarei grato se qualcuno potrebbe suggerire un modo per chiudere la finestra di notifica (DlgServerRequest) quando viene eseguito l'onAuthenticateUser ().
Soluzione
Perché non usare una vera e propria ProgressDialog
o qualche altro Dialog
? Poi, tutto quello che dovete fare è dismissDialog()
, e il gioco è fatto?
Se questo è inaccettabile, si dispone di due campi principali di azione che posso vedere:
- Spostare la logica di autenticazione nella classe
DlgServerRequest
, in modo che possafinish()
sé. - Mettere l'istanza della classe
DlgServerRequest
in un membro dati statici in modo che le attività principale può chiamarefinish()
su di esso
Se si sceglie l'opzione # 2, è davvero importante che null
membro di dati statici per evitare perdite di memoria.