Uso de variables estáticas en Android

En android, ¿se recomienda usar prácticas variables estáticas? Por ejemplo, la implementación de un patrón Singleton en Java, por lo general lo hacen:

private static A the_instance; public static A getInstance() { if (the_instance == null) { the_instance = new A(); } return the_instance; } 

Además, ¿cuándo se limpia esto por la JVM de Android?

Gracias.

static campos static se adjuntan a la Class instancia como un todo, que a su vez está unido al ClassLoader que cargó la clase. the_instance se descargará cuando se the_instance todo el ClassLoader . Estoy 90% seguro de que esto sucede cuando Android destruye la aplicación (no cuando entra en el fondo, o hace una pausa, pero se cierra completamente).

Por lo tanto, pensar en que viva mientras su aplicación se ejecuta. ¿Es Singleton una buena idea? Las personas tienen puntos de vista diferentes. Creo que está bien cuando se usa adecuadamente, yo mismo. No creo que la respuesta cambie mucho en Android. El uso de memoria no es el problema per se; Si necesita cargar un montón de cosas en la memoria, eso es un problema o no lo es, independientemente de si encapsula los datos en un Singleton.

Creo que las variables estáticas están bien.

Esto es lo que dice el documento de Android:

http://developer.android.com/guide/appendix/faq/framework.html

¿Cómo puedo pasar datos entre Actividades / Servicios dentro de una sola aplicación?

Un campo / método estático público

Una forma alternativa de hacer accesibles los datos a través de Actividades / Servicios es usar campos y / o métodos estáticos públicos. Puede acceder a estos campos estáticos desde cualquier otra clase en su aplicación. Para compartir un objeto, la actividad que crea su objeto establece un campo estático para apuntar a este objeto y cualquier otra actividad que desee usar este objeto sólo accede a este campo estático.

No estoy seguro de si este enfoque es bueno para la plataforma móvil en la que tiene limitada memoria disponible para usted. Sin mencionar que la aplicación se ejecutará en un dispositivo habilitado para multitarea.

Creo que este enfoque puede almacenar memoria desde el dispositivo, pero no tengo ningún documento para apoyar esto. Tal vez alguien que es más educado que yo puede compartir sus pensamientos.

No. ¡No lo hagas! Singleton es un anti-patern! . En su lugar, utilice la inyección de dependencia, ya sea a través de un marco (como a través de Dagger o Roboguice ) o pasando explícitamente el objeto instanciado.

  • ¿Alguna ayuda de Java con la fuente de Android por favor?
  • ¿Cómo puedo reemplazar type_orientation (está obsoleta) para android 4.0.3?
  • ¿Cómo puedo configurar la imagen de fondo con picasso en el código
  • Webview con interfaz de JavaScript
  • Dagger 2 en Android @Singleton clase anotada que no se inyecta
  • E.printStackTrace (); En cuerda
  • ¿Importa si escribo "INTEGER" o "int" en el comando sql dentro de java?
  • InteruptedException - Mensajes de Aftertouch
  • Combine Realm.io y Firebase
  • ArrayList como variable global
  • Android: java.lang.OutOfMemoryError:
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.