Spanish StateManager - Ayuda a gestionar la configuración y el estado de tus aplicaciones

joseluis

Active Member
Licensed User
Longtime User
[B4A] StateManager - Ayuda a gestionar la configuración y estado de tus aplicaciones

[Esto es una traducción del post original.]

StateManager es un módulo de código (Code Module) que se ocupa de manejar el estado de la interfaz de usuario y los ajustes de tu aplicación.

Ajustes
Son los valores configurables de la aplicación. Los ajustes se deberían guardar de forma permanente.

Los métodos para manejar la configuración son bastante sencillos:
  • StateManager.GetSetting (Key As String) As String: obtiene el valor asociado con la clave dada. Devuelve una cadena vacía si la clave no está disponible. Los ajustes se cargan desde un archivo si no estaban ya cargados.
  • StateManager.GetSetting2 (Key As String, DefaultValue As String) As String: Devuelve el valor por defecto si no encuentra la clave.
  • StateManager.SetSetting(Key As String, Value As String): Asocia el valor dado con la clave dada. Ten en cuenta que no hay necesidad de llamar a SaveSettings después de cada llamada a SetSetting.
  • StateManager.SaveSettings: guarda la configuración a un archivo. Por lo general tendrás que llamar a este método desde Activity_Pause.

Estado de la interfaz de usuario
El estado de la interfaz de usuario es un poco más interesante. En algunos casos, Android puede destruir nuestra actividad y volver a crearla cuando sea necesario. Esto sucede por ejemplo cuando el usuario cambia la orientación de la pantalla. Si el usuario ha introducido texto en una vista EditText entonces queremos mantener este texto. Así que en lugar de reiniciar la interfaz de usuario primero la guardamos y luego la restauramos.

No todos los elementos se guardan. Sólo los elementos con los que el usuario interactúa (como el texto EditText, el elemento elegido de un Spinner, el valor de SeekBar ...).
Utilizar StateManager para manejar el estado es fácil:
B4X:
Sub Activity_Resume
    If StateManager.RestoreState(Activity, "Main", 60) = False Then
        'set the default values
        EditText1.Text = "Default text"
        EditText2.Text = "Default text"
    End If
End Sub

Sub Activity_Pause (UserClosed As Boolean)
    If UserClosed Then
        StateManager.ResetState("Main")
    Else
        StateManager.SaveState(Activity, "Main")
    End If
    StateManager.SaveSettings
End Sub

Cuando la actividad es pausada, comprobamos si es el usuario quien eligió cerrar la actividad (pulsando sobre la tecla de retroceso). En ese caso reseteamos el estado. El parámetro de cadena es el valor ActivityName. StateManager puede administrar el estado de múltiples actividades de manera que el nombre es usado para diferenciar entre las actividades.
Si UserClosed = false entonces queremos guardar el estado.
La configuración se guarda en ambos casos.

Cuando se reanuda la actividad, llamamos a: StateManager.RestoreState. El último parámetro es el periodo de validez para este estado. El Estado no se cargará si ha pasado más tiempo que los minutos especificados. Pon 0 para un período de tiempo ilimitado.

RestoreState devuelve un valor booleano. Devuelve verdadero si el estado se ha cargado. Si el Estado no se ha cargado, es tu responsabilidad el establecer el valor por defecto. Este será el caso cuando el usuario ejecuta la aplicación por primera vez.

Para utilizar StateManager debes elegir Project - Add Existing Module y añadir StateManager.bas que se incluye en el ejemplo adjunto. También debes agregar una referencia a la biblioteca RandomAccessFile.

statemanager_1.png


---
|
zip.gif
StateManager.zip (9.1 KB) |
 
Last edited:

psdos

Active Member
Licensed User
Longtime User
joseluis, una vez mas, mil gracias, es un placer leerte por aqui.

Un saludo.
 
Top