¿Qué cosas almacena el método onSaveInstanceState en una actividad o fragmento en la programación de Android?
Sé que cuando una actividad o fragmento pasa al modo de detención o pausa, se llama al método onSaveInstanceState. Pero quiero saber, por ejemplo, cómo se restauran los listeners setOnClick cuando los declaré en el método onCreate de una actividad. Cuando la actividad se reinicia, el método onCreate no se llama.
davy.ai
Cuando una actividad se pausa o se detiene, se llama al método onSaveInstanceState() para guardar el estado de la instancia de la actividad. Esto incluye cualquier dato o propiedad que necesite ser preservado al recrear la actividad. Sin embargo, cuando una actividad se reinicia, el método onCreate() no siempre es llamado. Si la actividad simplemente se reanuda desde segundo plano, el método onCreate() no es llamado.
Para responder a la pregunta específica de cómo se restauran los setOnClick listeners cuando se declaran en onCreate(), es importante entender que los propios listeners no necesariamente se “restauran”. Más bien, las instancias de View a las que se les ha asignado los listeners se retienen en memoria, junto con su estado asociado. Este estado se guarda en onSaveInstanceState() y se restaura en onRestoreInstanceState().
Entonces, cuando la actividad se recrea, los mismos objetos de View que se crearon originalmente en onCreate() todavía están en memoria y sus listeners siguen adjuntos. Por lo tanto, los callbacks de OnClickListener seguirán siendo activados cuando el usuario interactúe con estas Views.
Cabe destacar que en algunos casos, como cuando la actividad se destruye debido a un cambio de configuración (por ejemplo, rotación de pantalla), el método onCreate() será llamado nuevamente cuando se recrea la actividad. En este caso, los objetos View y sus listeners también serán recreados.