Compartir a través de


Xamarin.Android ListView y el ciclo de vida de la actividad

Las actividades pasan por determinados estados a medida que se ejecuta la aplicación, como el inicio, la ejecución, la pausa y la detención. Para obtener más información y directrices específicas sobre el control de las transiciones de estado, vea el Tutorial de ciclo de vida de actividad. Es importante comprender el ciclo de vida de la actividad y colocar el código ListView en las ubicaciones correctas.

Todos los ejemplos de este documento realizan "tareas de instalación" en el método de OnCreate la actividad y (cuando es necesario) realizan "desmontaje" en OnDestroy. Los ejemplos suelen usar conjuntos de datos pequeños que no cambian, por lo que volver a cargar los datos con más frecuencia es innecesario.

Sin embargo, si los datos cambian con frecuencia o usan una gran cantidad de memoria, podría ser adecuado usar diferentes métodos de ciclo de vida para rellenar y actualizar el ListView. Por ejemplo, si los datos subyacentes cambian constantemente (o pueden verse afectados por actualizaciones en otras actividades), la creación del adaptador en OnStart o OnResume garantizará que se muestren los datos más recientes cada vez que se muestre la actividad.

Si el adaptador usa recursos como la memoria o un cursor administrado, recuerde liberar esos recursos en el método complementario al lugar en el que se crearon instancias (por ejemplo, los objetos creados en OnStart se pueden eliminar en OnStop).

Cambios de configuración

Es importante recordar que los cambios de configuración (especialmente la rotación de pantalla y la visibilidad del teclado) pueden hacer que la actividad actual se destruya y se vuelva a crear (a menos que especifique lo contrario mediante el ConfigurationChanges atributo ). Esto significa que, en condiciones normales, la rotación de un dispositivoListView y Adapter hará que se vuelva a crear y (a menos que haya escrito código en OnPause y OnResume) se perderán los estados de selección de posición de desplazamiento y fila.

El atributo siguiente impediría que una actividad se destruyese y se vuelva a crear como resultado de los cambios de configuración:

[Activity(ConfigurationChanges="keyboardHidden|orientation")]

A continuación, la actividad debe invalidar OnConfigurationChangedpara responder a esos cambios de forma adecuada. Para más información sobre cómo controlar los cambios de configuración, vea la documentación.