¿Puede el recolector de basura desasignar una instancia singleton? (Y por qué o cómo evitarlo)

En Android tengo clase singleton pero no estoy seguro de si el recolector de basura puede desasignarlo.

Si el recolector de basura desasignará mi clase singleton, ¿cómo evitarlo de la desasignación?

La recolección de basura recoge objetos a los que no se señala nada, a menos que una referencia sea estática. ¿Se abren campos estáticos para la recolección de basura?

La única razón por la que gc repartirá tu instancia es si toda la aplicación se destruye …

Hay muchas maneras de implementar un Singleton. Uno de los mejores es:

 public static enum My { SINGLETON; } 

Si algo es un singleton no tiene nada que ver con si es GCed o no. Un objeto será GCed si no hay referencias Strong a él. Busque ( http://weblogs.java.net/blog/2006/05/04/understanding-weak-references ).

Hay un tema más de interés. En Android, su aplicación no controla su ciclo de vida. Es posible que un proceso se termine y se vuelva a crear de una manera que no espera. Si esto ocurre, las variables finales estáticas serán reinicializadas. Hay más en eso aquí:

http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/

  • Métodos estáticos o singleton, ¿cuál elegir?
  • Java Singleton + clase interna mal entendida
  • Objetos de comunicación entre fragmentos múltiples en ViewPager
  • AlarmManager estático en Android
  • Problemas con singleton en android
  • Acceder a los campos singleton mediante un método estático
  • Uso del patrón de diseño Singleton para SQLiteDatabase
  • Android Volley error en getInstance (este) al agregar ImageLoader
  • ¿Por qué la clase singleton sobrevive a la actividad?
  • ¿Android pasa información persistente en paquetes o usa un patrón singleton?
  • Actividad de Android singleton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.