Pregunta

Todas mis pantallas inherente de una pantalla con el siguiente método onClose ():

    public boolean onClose()
    {
        Dialog.alert("Closing");
        done = true;
        System.exit(0);

        return true;
    }

I tipo de asumido que System.exit (0); sería realmente matar a mi solicitud.

Si pulso el botón rojo para la salida por completo, me pongo un "cierre" mensaje de diálogo con éxito. Lo mismo si pulso el botón de retroceso demasiadas veces. Pero incluso si consigo que el diálogo "Cierre", todavía veré a mi aplicación que se ejecuta en segundo plano cuando selecciono "Application Switch".

No sólo eso, si tengo un hilo en ejecución, a veces voy a ver todavía en marcha después de que he salir de la aplicación (que es por eso que tengo ese conjunto de variables usada, por lo que mis hilos automáticamente abortar si se hace true).

Y encima de eso, si la aplicación se bloquea, definitivamente no veo mi mensaje de diálogo, incluso si me las arreglo para salir de la aplicación en su totalidad. Si intento Haga clic de nuevo la aplicación después de que se estrelló, no lo hace de recarga, también. Siempre. ¿Hay alguna forma de manejar con gracia esa situación? (Obviamente he suministrado el tratamiento de errores para cada problema que he encontrado, pero si algo sucede en la naturaleza, quiero al menos la solicitud de no continuar consumiendo memoria)

Do Blackberry aplicaciones simplemente nunca se cierran? ¿Estoy haciendo algo mal? En este momento si quiero mi solicitud para detener la ejecución, tengo que eliminar por completo y volver a instalarlo!

¿Fue útil?

Solución

Si está ampliando net.rim.device.api.ui.Screen (no MainScreen o algún otro niño de la pantalla), entonces debería establecer específicamente éter estilo DEFAULT_CLOSE o poner en práctica algo que llama estrecha similar () cuando la pantalla se debe tomar hacia abajo por los documentos de la API:

public boolean onClose()

Indicates a close event has occurred.

The default implementation is activated by specifying DEFAULT_CLOSE. It will call onSavePrompt() if the screen is dirty, then call close() if successful.

Returns:
    True if the screen closes; otherwise, false.
Since:
    JDE 3.6.0

Llamando System.exit (0) debe dar lugar a la aplicación de salir Sin embargo puede haber compensaciones firmemente la aplicación para permitir que los hilos a la salida y pantallas para cerrar limpiamente. La manera normal para una aplicación de interfaz gráfica de usuario de la zarzamora a la salida es cuando la última pantalla se extrae de la pila de visualización, que sucede cuando close () se llama.

Otros consejos

No llame System.exit(0); llamada super.onClose(); menos que lo que dice debajo de su no overridding MainScreen

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