Singletons no disponibles cuando la aplicación vuelve a la memoria

El problema que enfrento es el siguiente: Cuando comienzo mi aplicación todos los singletons se inicializan en la actividad principal y todo funciona como se esperaba. Entonces, si presiono el botón de inicio y regreso a la aplicación rápidamente todo funciona, creo que es porque todo está en la memoria todavía, pero si voy a cromo ver un par de videos o iniciar un juego e intentar volver a mi aplicación I Obtener una excepción. No entiendo este estado de la aplicación porque no está muerto pero no está en la memoria y trata de volver a la actividad que era antes de presionar el buttom casa, el método onCreate se llama y recibo el Intent que llamó a la actividad En primer lugar, pero singletons no se inicializan, la excepción se produce aquí:

Tracker tracker = GoogleAnalytics.getInstance(this).getDefaultTracker(); tracker.set(Fields.SCREEN_NAME, "My View"); tracker.send(MapBuilder .createAppView() .build() ); 

Una posible solución que he intentado es sólo la comprobación del rastreador y si es nulo crear una nueva y establecerlo:

 if(tracker == null){ tracker = GoogleAnalytics.getInstance(this).getTracker(trackerId); GoogleAnalytics.getInstance(this).setDefaultTracker(tracker); } 

Pero recibo otra excepción en otro singleton. Mi pregunta es: ¿qué variables se guardan en la memoria cuando la aplicación está en este estado? ¿Qué debo hacer, tal vez llamada terminar cuando el rastreador es nulo? O Intención de la actividad principal?

Simplemente el sistema Android no asegura nada permaneciendo en la memoria para siempre, siempre que el sistema necesita memoria que va a empezar a borrar aplicaciones de fondo y servicios de acuerdo a la prioridad.

  • Un enfoque es que puede hacer que los getters de los singletons manejar que, si la variable de instance en su singleton es nulo o no inicializado, entonces usted debe inicializar, que podría resolver su problema y se agrega un sabor de inicialización perezoso a su enfoque.

  • Otro es que puedes agregar un indicador en onSaveInstance() y puedes comprobarlo en tu onCreate() , entonces sabrás si es la primera vez que tu actividad se inicia o se ha borrado de la memoria y se está reiniciando.

Intente usar finish () y también agregue el método try catch en la condición If

  • SQLite incapaz de abrir el archivo de base de datos (código 14) en la consulta "SELECT" frecuente
  • ¿Por qué un servicio Android no es singleton cuando se prueba?
  • ¿Puede el recolector de basura desasignar una instancia singleton? (Y por qué o cómo evitarlo)
  • Singleton en Android
  • Android: No se puede realizar esta operación porque se ha cerrado el grupo de conexiones
  • La forma más segura de usar SharedPreferences
  • Obtener contexto en la biblioteca de Android
  • ¿Por qué la clase singleton sobrevive a la actividad?
  • Uso del patrón de diseño Singleton para SQLiteDatabase
  • Variables estáticas, patrón y rendimiento de Android
  • Objetos de comunicación entre fragmentos múltiples en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.