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 ().

È stato utile?

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:

  1. Spostare la logica di autenticazione nella classe DlgServerRequest, in modo che possa finish() sé.
  2. Mettere l'istanza della classe DlgServerRequest in un membro dati statici in modo che le attività principale può chiamare finish() su di esso

Se si sceglie l'opzione # 2, è davvero importante che null membro di dati statici per evitare perdite di memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top