El listener olvidado
Repaso exprés de la Clase 1:
Callback
Función que entregas para que otro la invoque. Tú decides QUÉ; quien la guarda decide CUÁNDO. Si es diferido: otra pila, quizá otro hilo.
Listener
Callback suscrito a una FUENTE. De 0 a N por fuente, con alta y baja en ejecución. La baja exige la misma referencia.
Handler
Callback responsable de un TIPO de evento. Lo elige el despacho. Hasta ahora, escrito a mano: when (evento) { … }.
Hoy: quién es el dueño de cada callback y cuánto debe vivir, y cómo montar el despacho para que sirva igual en Android, en un servidor o en un ESP32.
Quien guarda un callback mantiene vivo todo lo que ese callback referencia
Cada flecha es una referencia fuerte: mientras exista la primera caja, existe la última. El recolector de basura no puede liberar nada de lo que todavía es alcanzable desde el GPS.
Síntoma 1 · Fuga de memoria
El usuario cierra la pantalla, pero el GPS sigue apuntando a ella: ni la pantalla ni sus vistas pueden liberarse. Diez aperturas = diez pantallas en memoria.
Síntoma 2 · Callbacks fantasma
La fuente sigue invocando al listener de una pantalla que ya no existe: trabajo inútil, estado incoherente y, a menudo, una excepción.