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; } } 
  • El reemplazo de fragmentos activa onQueryTextChange en la vista de búsqueda
  • Estado de ahorro de Android en el cambio de orientación
  • Dagger 2 Guardar y restaurar el estado cuando se detiene la actividad
  • Cómo guardar la posición de desplazamiento de RecyclerView con RecyclerView.State?
  • ¿Es posible crear un estado personalizado para su uso en un StateListDrawable?
  • Android: Guardar XWalkView - Estado de la pasarela
  • Fragmentos que desaparecen después de la aplicación no se ha utilizado durante pocas horas
  • Cómo declarar variables globales en Android?
  • NullPointerException en el método de mutación de Drawable Android 1.6
  • Ocultar barra de estado pero mostrar barra de acción
  • Android Completamente transparente Barra de estado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.