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?
- Android: "Expresión esperada" al pasar una clase de actividad
- Equivalente a push () o pop () para arrays?
- ¿Cómo puedo compartir varios archivos a través de un intento?
- ¿Cómo obtener la vista de un elemento en listview en android?
- Forzar OpenGL Buffer para usar GL 1.0 o 1.1?
Gracias.
- LibGDX movimiento no suave
- La actividad se bloquea en setAdapter (ArrayAdapter);
- Obtener foto de perfil de facebook y establecer en imageview
- OnHandleIntent () no se llama en IntentService
- ¿Cómo aprender un marco sin tutoriales
- No se puede iniciar Eclipse - Java se inició pero devolvió el código de salida = 13
- Quitar el prefijo de URL de String (http: /, www, etc.)
- Diferencia entre SparseArray Vs ArrayList?
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.
- Bibliotecas de gráficos Android
- Prefijo de espacio de nombres inesperado "xmlns" encontrado para la etiqueta LinearLayout