2012-07-23 28 views
11

Digamos que tenemos una actividad vacía predeterminada con comportamiento predeterminado, que se inicia con indicadores de intención predeterminados. El usuario presiona el botón Atrás en el dispositivo. La actividad desapareció ... ¿pero cómo, en realidad?Comportamiento del botón Atrás de Android

  • ¿El botón de retroceso se comporta de la misma manera que finish()?
  • ¿La actividad se destruye inmediatamente (se llama onDestroy)?
  • ¿Se garantiza la destrucción de la actividad, pero no de forma inmediata?
  • ¿Hay alguna posibilidad de que la actividad no se destruya y esta instancia se reutilizará cuando esta actividad se inicie en el futuro? (Por lo que sólo y onStop ->onStart y onResume se llaman?)

Busco una respuesta fiable, por lo que no responda si no está absolutamente seguro de lo que pasa aquí.

+4

esto podría ser de su interés: http://developer.android.com/training/basics/activity-lifecycle/index.html –

+0

puede publicar su código, por lo que podemos juzgar mejor –

+1

¿Hay algo en 'predeterminado , actividad vacía con comportamiento predeterminado, lanzada con banderas de intenciones predeterminadas "no se puede reproducir" Simplemente crea un proyecto predeterminado en tu IDE. –

Respuesta

6

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

Este es un subcapítulo de la documentación oficial de Android que aborda su pregunta. Es un subcapítulo del tema Managing the Activity Lifecycle, que se puede leer aquí: http://developer.android.com/training/basics/activity-lifecycle/index.html

es definitivamente vale la pena leer todo el capítulo para conocer los detalles acerca de la conducta de actividad androides. Pero el subcapítulo (primer enlace) es la parte relevante de esta pregunta.

+0

Esta es una [respuesta solo de enlace] (http://meta.stackexchange.com/q/8231/247470), ¿puede citar las partes relevantes del documento? Se siente como si quisieras hacer el bien al obligar a la gente a leer esos artículos, probar el método socrático y usar el [spoiler markdown] (http://meta.stackexchange.com/q/1191/247470). – TWiStErRob

1

Cuando el usuario presiona la tecla ATRÁS, la actividad actual aparece desde la parte superior de la pila (se garantiza que se destruirá la actividad, pero no inmediatamente, cuando los recursos del sistema son bajos) y la actividad anterior se reanuda (el estado anterior de su UI se restaura).

Which actions does the back button/back key on Android trigger?

+0

Consulte esta pregunta: http://stackoverflow.com/questions/4778754/kill-activity-on-back-button Si siempre se destruye, ¿por qué fuerzan el acabado() en la parte posterior ¿botón? –

+0

Consulte también la respuesta aceptada aquí: http://stackoverflow.com/questions/3249332/did-back-key-destroy-an-activity –

2

Cuando se presiona la espalda, (si no es interceptado por algo como el teclado, el fragmento, actividad, etc.) del sistema operativo (a través de ActivityManager probablemente) tratará de mostrar al usuario la actividad anterior en su tarea actual (de nuevo, ignorando la pila posterior de los fragmentos).

Si no hay tal actividad, la tarea finalizará y pasará a la tarea anterior - la pantalla de inicio la mayoría de las veces o alguna otra aplicación que podría haber lanzado su aplicación.

Llamará pronto al onDestroy (depende de cuánto tiempo lleve iniciar la siguiente actividad, pero en un buen teléfono debería ser inferior a 100-200ms).

Su instancia de actividad no se reutilizará después de onFinish. Esto sucede antes de que se destruya la actividad, por lo que si necesita otra actividad del mismo tipo, el sistema operativo creará otra instancia.

+0

Eso no es lo que le pregunté. La pregunta es lo suficientemente precisa. –

+0

"La actividad desapareció ... ¿pero cómo, en realidad?" - Creo que abordé su pregunta –

+0

Y ese es el problema con usted. Acabas de leer la primera oración y responder sin pensar. Si lees el resto, notarás que he explicado exactamente qué estoy preguntando. –

2

que utilice debe mirar en este try this

y por favor diga específica lo que desea hacer con el botón de retroceso para sus actividades predeterminadas ......

0

Definitivamente onDestroy() se llama ..... Hay algunos escenarios en los que su actividad se destruye debido al comportamiento normal de la aplicación, como cuando el usuario presiona el botón Atrás o su actividad señala su propia destrucción llamando al finish().

Cuestiones relacionadas