2012-09-07 14 views
5

Gracias por leer, por la pregunta, aunque sea muy noob-ish ...inicializaciones actividad repetida y uso de memoria

¿Cómo funciona el sistema Android gestionar la memoria con respecto a la actividad de inicialización, especialmente si la actividad se inicia a través de otra ¿ocupaciones? Esta ha sido una pregunta persistente en mi mente por un tiempo, pero voy a tratar de ilustrar con un ejemplo:

decir que tengo 3 actividades - Un, B y C - con actividad Un es el que se inicia cuando se inicia la aplicación por primera vez. Ahora, supongamos que la actividad Un tiene botones para navegar a las actividades B y C, y esas actividades se ponen en marcha mediante la función de Android startActivity(), pasándole una instancia Intent. Del mismo modo, digamos actividades B y C tienen botones para iniciar sus actividades equivalentes ... ¿tiene sentido hasta ahora?

Ahora, si yo uso el startActivity() a:

  • actividad de inicio B de la actividad Un
  • a continuación, inicie la actividad C de la actividad B
  • a continuación, iniciar la actividad A de la actividad C
  • continuación, repita los pasos anteriores indefinidamente (por lo que va en círculos)

... ¿sería justo asumir que el sistema Android sería "saber" que las actividades que ya se habían iniciado con anterioridad y wouldn ¿Los reinicializar y matar a más y más memoria, sino más bien llamar a algo así como la funcionalidad onRestart() para "cambiar" de nuevo a una instancia ya iniciada de la actividad?

Completamente una explicación para una pregunta/problema muy simple ... disculpas si esto ya se ha preguntado y respondido en otro lugar ... No pude encontrar una respuesta clara en ningún otro lado, incluso al leer la sección Android training en el sitio de desarrolladores de Android.

Respuesta

7

La respuesta es: Depende. :-)

Si utiliza la configuración estándar para las actividades Un, B y C, su aplicación se ejecutará sin memoria. La razón es que Android mantendrá cada actividad en el "Back Stack" que permite al usuario navegar hacia atrás presionando el botón Atrás.

Sin embargo, si se establece la android:launchMode de sus actividades a singleTop en el archivo AndroidManifest.xml continuación Android encaminará las intenciones a las instancias en ejecución de las actividades invocando onNewIntent() en la actividad.

Puedes leer más al respecto en el Android Developer Documentation con respecto a los modos de lanzamiento.

+0

Gracias por la información Nicholas, muy apreciado! Voy a investigar un poco sobre sus recomendaciones y espero tener algunos comentarios pronto! –

+0

De nada. – Nicholas

+0

Parece ser exactamente lo que estaba buscando ... ¡gracias de nuevo! :) –

Cuestiones relacionadas