Pregunta

I creado una aplicación que se forma asíncrona comunicando con el servidor. Cuando la aplicación realiza una solicitud de un nuevo servidor de diálogo (actividad) se crea con la notificación de "carga". La actividad principal implementa métodos para el manejo de las respuestas del servidor y me gustaría cerrar la actividad de primer plano cuando la actividad principal recibe la respuesta desde el servidor.

Notificación de diálogo se crea de la siguiente manera:

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

}

así que cuando el usuario intenta autenticar el siguiente método se llama:

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

y onAuthenticateResponse maneja respuesta de autenticación:

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

Le agradecería si alguien pudiera sugerir una manera de cerrar el diálogo de notificación (DlgServerRequest) cuando se ejecuta el onAuthenticateUser ().

¿Fue útil?

Solución

¿Por qué no utilizar un ProgressDialog real o alguna otra Dialog? Entonces, todo lo que necesita hacer es dismissDialog(), y ya está?

Si eso es inaceptable, tiene dos líneas de acción principales que puedo ver:

  1. Mueva su lógica de autenticación en la clase DlgServerRequest, por lo que puede finish() sí mismo.
  2. Pon tu instancia de la clase DlgServerRequest en un miembro de datos estáticos por lo que su actividad puede llamar finish() en él

Si elige la opción # 2, es muy importante que null miembro de datos estáticos para evitar pérdidas de memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top