Gestión de procesos en Android

La mayoría de las aplicaciones Android se ejecutan de forma independiente en su propio proceso con una máquina virtual Java dedicada. El sistema asigna a cada aplicación un identificador de usuario (UID) único y gestiona dinámicamente la vida de los procesos y la asignación de memoria.

Estados de una actividad

Una actividad puede encontrarse en uno de los siguientes estados:

Estado Descripción
Activa Se está ejecutando en primer plano
Pausada Es visible pero está parcialmente tapada por otra actividad
Parada Está oculta por completo por otra actividad
Terminada Nunca se inició o fue destruida por el sistema

Métodos del ciclo de vida

El ciclo de vida de una actividad Android se gestiona a través de siete métodos:

Método Cuándo se llama
onCreate() Al crear la actividad por primera vez
onStart() Cuando el sistema va a mostrar la actividad
onResume() Cuando la actividad pasa a ser totalmente visible
onPause() Cuando el usuario deja de interactuar con ella
onStop() Cuando la actividad queda completamente oculta
onRestart() Cuando una actividad parada vuelve a mostrarse
onDestroy() Justo antes de destruir la actividad

Ejemplo práctico

El siguiente ejemplo muestra un Toast en cada método del ciclo de vida para observar la secuencia completa de transiciones durante la ejecución:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onResume() {
        super.onResume();
        Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onPause() {
        Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
        super.onPause();
    }

    @Override
    protected void onStop() {
        Toast.makeText(this, "onStop", Toast.LENGTH_SHORT).show();
        super.onStop();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Toast.makeText(this, "onRestart", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show();
        super.onDestroy();
    }
}

Al lanzar la aplicación se ejecutan en orden onCreateonStartonResume. Al pulsar el botón Inicio se llama onPauseonStop. Al volver a la aplicación: onRestartonStartonResume. Al pulsar Atrás: onPauseonStoponDestroy.