Estoy hablando acerca de la programación en android.

En los primeros días pensé que, finish() cierra actividad actual y volver a la anterior en la Actividad de la pila, y System.exit(0) cierra toda la aplicación.

Pero estaba equivocado.
He hecho un pequeño experimento y entiende que Tanto va a terminar sólo la Actividad actual.


La única diferencia que pude notar es que, en Android 2.3.3

  • La ActivityResult se propaga de nuevo a onActivityResult() utilizando finish(). Mientras que onActivityResult() no se llama para System.exit(0).

Pero en Android 4.2.2, onActivityResult() es llamado para ambos! y la Intención era nula para exit().
(He probado solo en estos 2 dispositivos)

  • Hay un lapso de tiempo, cuando el uso de exit (), mientras que finish() es más rápido.(parece más operaciones en segundo plano hay en exit())

Así,

  1. ¿cuál es la diferencia entre los dos?

  2. Situaciones en las que, puedo usar exit()?

Creo que hay algo más que me estoy perdiendo entre los dos métodos.
La esperanza de que alguien puede Explicar más y me corrija.

Gracias

MODIFICAR A PETICIÓN:

Hacer una aplicación para Android con 2 Actividades. Llamar la segunda Actividad del Iniciador de la actividad mediante la Intención. Ahora, dentro de la segunda actividad, a un clic de botón, llamada System.exit(0);.
«El VM detiene el proceso de ejecución y el programa se cerrará.«????(de acuerdo a documentación)

Veo actividad allí. Por qué?
(Usted es bienvenido a demostrar que estoy equivocado/yo estaba a la derecha)

  • stackoverflow.com/questions/2033914/…. comprobar las respuestas aquí
  • Que es una buena. Todos, por favor, eche un vistazo. Pero una gran cantidad de información. Puede alguien decir en breve para que se adapte a mi tema?
  • nunca use System.exit() no lo recomiendo. Uso finish(). Para la navegación se puede utilizar la navegación de cajón.
  • Esto es muy interesante. ¿Por qué no la aplicación cerca de la documentación de los estados?
InformationsquelleAutor Nizam | 2013-08-17

4 Comentarios

  1. 22

    Realidad no hay ninguna diferencia si usted tiene sólo una actividad. Sin embargo, si usted tiene varias actividades en la pila, entonces:

    • finish() – termina la actividad en la que se llama desde y ver la actividad anterior.
    • Sistema.exit(0) – se reinicia la aplicación con uno menos actividad en la pila. Por lo tanto, si usted llama ActivityB de ActivityA, y System.exit(0) se llama en ActivityB, a continuación, la aplicación va a ser asesinado y comenzó de inmediato con sólo una actividad ActivityA
  2. 13

    De acuerdo a los Desarrolladores de android –

    finish()

    Llamar a este cuando su actividad se realice y debe ser cerrado. El
    ActivityResult se propaga de nuevo a quien se lanzó a través de
    onActivityResult().

    System.exit(0)

    La VM detiene el proceso de ejecución y el programa se cerrará.

    • Sistema.exit() no matar a su aplicación, si usted tiene más de una actividad en la pila. Por favor, compruebe.
    • no matar a su aplicación, si usted tiene más de una actividad en la pila» – ustedes son bienvenidos a aportar la prueba de su afirmación de que el proceso no está terminado, por la carga de una aplicación que muestra este comportamiento, junto con las medidas que tomó para confirmar que el proceso no fue terminado.
    • Yo no dijo que el proceso no está terminado. Y yo no sé lo que está sucediendo en el interior. En la abstracción, si estoy usando finish() o exit() dentro de una actividad, la actividad anterior se muestra. que es lo que quiero decir por la app no muertos.
    • a lo que me refería por la app no muerto», entonces usted es bienvenido para proporcionar evidencia de que la documentación afirmó que System.exit() causaría una aplicación para ser «asesinado», por cualquiera que sea la definición de «muerto».
    • Por favor me corrija si estoy equivocado. Véase la respuesta anterior. He utilizado «matado» en lugar de «salir» de allí.
    • estás en lo correcto. La aplicación está todavía EN.

  3. 9

    De acuerdo a la documentación, El programa se cerrará.

    Pero me parece un error en la documentación. En el caso de un programa en java, es correcto. Pero, al llegar a Android, podrás ver la Actividad anterior de la pila.

    Desde Android codificación se realiza utilizando java codificación, la mayoría de la documentación es la misma que los de java.

    De documentación,

    Sistema.exit(0)

    La VM detiene el proceso de ejecución y el programa se cerrará.



    Para Android aspecto, tenemos que sustituir la palabra ‘programa’ con algo más. Puede ser Actividad o Contexto.

  4. 3

    Sa Qada respuesta es correcta después de mi prueba.

    acabado de cerrar esta actividad y de vuelta a prevous.

    pero la salida se cerrará la actividad actual y vacía todo el actividad en congelar y empezar de nuevo la actividad anterior

    Realidad no hay ninguna diferencia si usted tiene sólo una actividad.
    Sin embargo, si usted tiene varias actividades en la pila, entonces:

    finish() – acabados de la actividad en la que se llama y las puedes ver
    la actividad anterior. Sistema.exit(0) – reinicia la aplicación con una
    menos actividad en la pila. Por lo tanto, si usted llama ActivityB de
    ActivityA, y Sistema.exit(0) se llama en ActivityB, entonces el
    la aplicación va a ser asesinado y comenzó de inmediato con sólo una
    actividad ActivityA

Dejar respuesta

Please enter your comment!
Please enter your name here