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 puedo guardar un mapa de bits con onRetainNonConfigurationInstance () para la orientación de la pantalla?
- Parpadeo de la barra de estado al salir de la actividad de pantalla completa
- GCM Clave para aplicaciones de navegador (con referers) estado inactivo
- Visualización de texto como un icono en la barra de estado
- OnCreateDrawableState nunca llama
Tenga en cuenta que ya hay una sugerencia que recomienda la subclase Aplicación: ¿Cómo declarar variables globales en Android?
Gracias.
- ¿Cuál es el valor predeterminado para presionar un elemento de lista
- Android diferentes fondos de EditText para diferentes estados usando formas, selector o lista
- Obtener la altura de STATUS BAR
- Estado de la orden de compra de Android In App
- Android GPS activado o desactivado
- Mostrar barra de progreso indeterminada en la barra de estado de Android
- Barra de estado transparente: antes de Android 4.4 (KitKat)
- Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
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; } }
- Sugerencia EditText que no se muestra en 5.0.1
- ¿Cuál es la mejor manera de crear la conexión DB greenDAO sólo una vez para una sola ejecución de la aplicación?