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.

Tenga en cuenta que ya hay una sugerencia que recomienda la subclase Aplicación: ¿Cómo declarar variables globales en Android?

Gracias.

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; } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.