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 OnConfigurationChanged
para 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.