Android: Mantener el estado global de la aplicación
La documentación de Android para los estados de aplicación: normalmente no es necesario subclasificar la aplicación. En la mayoría de las situaciones, los singletons estáticos pueden proporcionar la misma funcionalidad [es decir, mantener el estado de la aplicación global] de una manera más modular. Si su singleton necesita un contexto global (por ejemplo, para registrar receptores de radiodifusión), la función para recuperarla se puede dar un contexto que utiliza internamente Context.getApplicationContext () al construir primero el singleton.
Mi petición es: ¿Puede explicar y proporcionar un ejemplo de código que implementa la sugerencia anterior para mantener el estado global.
- Cómo guardar / restaurar variables globales en android incluso cuando os matar aplicación
- Android - ¿es posible usar intentos privados en vez de globales?
- ¿La forma preferida de conectar AudioEffect a la mezcla global?
- Silenciar el sonido global en Android
- ¿Es segura una clase "Globals" que sostiene variables estáticas en Android?
Tenga en cuenta que ya hay una sugerencia que recomienda la subclase Aplicación: ¿Cómo declarar variables globales en Android?
Gracias.
- El mismo botón en múltiples actividades
- ¿La variable estática es verdaderamente "global" (en todo el sistema) en Android?
Si no estoy equivocado, intenta guardar variables globales sin extender la aplicación. Si es así puedes hacer dos cosas
si usted no necesita ningún contexto entonces usted ca simplemente utilizar una clase con miembros estáticos como este
public class ApplicationState { public static boolean get() { return b; } public static void set(boolean a) { b = a; } private static boolean b; }
Y si necesita un contexto pero no desea extender la aplicación puede utilizar
Public class ApplicationState { private Context context; private static ApplicationState instance; private ApplicationState(Context context) { this.context = context; public static ApplicationState getInstance(Context context) { if (instance == null) { instance = new ApplicationState(context); } return instance; } public void someMethod(){} }
Así que puede llamar a algún método como este ApplicationState.getInstance(context).somemethod();
Corrección a la respuesta de StinePike con respecto al contexto en el ApplicationState. En el código publicado el contexto pasado en el estado de aplicación se mantiene en. Si el contexto pasado es una actividad o unidad similar, entonces la actividad se filtró y se evitó que se recogiera basura.
La documentación de Android para los estados de clase de aplicación debe "utilizar internamente Context.getApplicationContext()
al Context.getApplicationContext()
primero el singleton."
public class ApplicationState { private Context applicationContext; private static ApplicationState instance; private ApplicationState(Context context) { this.applicationContext = context.getApplicationContext(); } public static ApplicationState getInstance(Context context) { if(instance == null) { instance = new ApplicationState(context); } return instance; } }