Hace unos días descubrí que singleton puede convertirse en antipatrón en Android. Mi singleton (clase con constructor privado e instancia almacenada en el campo estático) se eliminó (la instancia se eliminó a pesar de que otras actividades seguían usando este singleton (a través del método getInstance()) por lo que se tuvo que crear otra instancia) porque Actividad de la cual se invocó por primera vez se eliminó (después de invocar finalizar solo para esta actividad).Ciclo de vida de singleton basado en enum en Android
He leído ya cómo se puede resolver este problema, pero también acabo de leer "Java eficaz". Se dice que "el tipo de enumeración de elemento único es la forma de bast para implementar un singleton".
Así que ahora me pregunto cuál sería el ciclo de vida de singleton creado de esta manera en la aplicación de Android? ¿Sería lo mismo que en el caso de la "implementación singleton estándar" así que después de destruir la actividad desde la cual fue invocada la primera vez será destruida (incluso si se usó también en otras actividades)?
No estoy preguntando acerca de la implementación de singleton android adecuada o el patrón singleton en sí (es patrón o anti-patrón, etc.) pero me gustaría saber cuál es el ciclo de vida de dicho objeto singleton enum y cuándo será destruido.
Singleton es un antipatrón en general. Si realmente necesita algo de algo, simplemente no haga otro. P – cHao
Esto podría necesitar alguna aclaración: Su singleton (es decir, el código que poner en su enumeración) y la referencia de Android desapareció cuando salió su actividad (y también se cerró su aplicación)? Este sería el comportamiento esperado para cualquier singleton? Todo el estado que necesita retener entre reinicios de la aplicación debe estar en almacenamiento permanente como 'SharedPreferences'. OTOH, podría haber entendido mal la pregunta :-D – Jens
@Jens He actualizado mi pregunta. – mmatloka